nosql not only sql
用户画像:
热点数据:经常被使用的数据
mysql
安装
-
可以使用yum 安装,要先配置epel源
yum install -y redis
-
可以编译安装
wget http://download.redis.io/releases/redis-5.0.5.tar.gz tar xf redis-5.0.5.tar.gz cd redis-5.0.5/ make
redis 可执行文件
redis-benchmark #性能测试
redis-check-aof # 检查修复aof文件
redis-check-rdb # 检查修复rdb文件
redis-cli # redis的客户端
redis-sentinel # redis的集群
redis-server # redis的服务端
redis-trib.rb #集群管理
启动redis
./src/redis-server 默认端口是6379,默认启动会占用终端
性能测试
./src/redis-benchmark -q
PING_INLINE: 73855.24 requests per second
PING_BULK: 73800.73 requests per second
SET: 74074.07 requests per second
GET: 72833.21 requests per second
INCR: 73637.70 requests per second
LPUSH: 73855.24 requests per second
RPUSH: 70175.44 requests per second
LPOP: 72202.16 requests per second
RPOP: 74183.98 requests per second
SADD: 74962.52 requests per second
HSET: 75642.96 requests per second
SPOP: 73746.31 requests per second
LPUSH (needed to benchmark LRANGE): 74850.30 requests per second
LRANGE_100 (first 100 elements): 48379.30 requests per second
LRANGE_300 (first 300 elements): 24172.11 requests per second
LRANGE_500 (first 450 elements): 18670.65 requests per second
LRANGE_600 (first 600 elements): 15384.62 requests per second
MSET (10 keys): 78186.08 requests per second
默认是100000,50个同时发起连接
连接
./src/redis-cli
-h ip地址
-p 端口
-s 套接字
-a 密码
-n 指定redis的库
redis的命令是不区分大小写
redis的数据类型
- string
- hash
- list
- set
- zset
命令相关
ping
用来测试redis是否连通,返回值是pong
info
获取系统的信息
echo
打印内容,测试使用
quit
退出
select
切换redis的库,总共有16个,0-15
del
删除指定的一个或者多个key,不存在的key忽略
exists
判断key 是否存在,存在是1,不存在是0
expire key seconds
给指定的key设置存活时间,当key过期以后,就自动删除
ttl
查看key的存活时间,-2 key不存在 -1 永久生效
keys pattern
查找所有符合pattern 的key,支持通配符
move key db
移动当前的key到指定的db里面,成功返回1,失败返回0
pexpire key 毫秒
给一个key 设置过期时间,单位是毫秒
pttl key
查看key的存活时间,但是为毫秒
randromkey
随机获取一个key,但是不删除,如果数据库为空,则返回空
rename
重命名key,如果源key不存在,则报错,如果目标key存在,则覆盖
renamenx
重命名key,如果源key不存在,则报错,如果目标key存在,则不变
type
查看key所存储的数据类型,如果没有这个key,则返回none
string
set
设置key value
如果key存在,则覆盖,不存在,则新建
ex second 设置key的存活时间,单位是秒
px 毫秒 设置key的存活时间,单位是毫秒
nx 如果键不存在,则新建,如果存在,则返回nil
xx 只有键存在,才能操作
get
获取key对应的value,只能获取一个,如果key存在,则返回值,如果key不存在,则返回nil
mset
批量创建key vlaue对应关系,会覆盖已存在的key
mget
批量获取key,如果不存在,则返回nil
getset
给指定的key设置新value,并返回原来的value,如果key不存在,则返回nil
strlen
返回value的长度
append
如果key存在,则追加,如果key不存在,则新建
incr
将key中存在的数加1,只能对数字有效
decr
将key中存在的数值减1,只能对数字有效
incrby
将key中存在的数值指定增加多少,只对数字有效
decrby
将key中存在的数值减少指定的值,只能对数字有效
getrange
切片,同python类似,不能使用步长
incrbyfloat(默认保留17位)
将key中存在的数值增加指定的浮点数
list
lpush
将一个或者多个value插入到列表的头部
lpop
移除并返回列表key的头一个元素
lrange
查看列表指定的元素,全部显示是0,-1
rpush
将一个或者多个value插入到列表的尾部(最后边)
rpop
删除尾部的值
rpushx
将value插入到key的尾部,key必须存在才可以
lpushx
将value插入到key的头部,key必须存在才可以
lindex
从表头开始,获取下标为index的value
linsert
将value插入到key指定的元素前或者后
before 前
after 后
如果value不存在,则不操作
llen
获取列表长度
lrem
删除列表中的value
- count > 0 从表头往表尾的方向查找,删除指定的个数
- count = 0 全部删除
- count < 0 从表尾的位置往表头的方向查找,删除指定的个数
lset
替换指定的索引位置的value,如果索引超出范围,则报错
ltrim
列表的切片
hash
{‘db‘:{"redis":‘redis.conf‘,"mysql‘:‘my.cnf‘,"nginx":"nginx.conf"}}
hset
给hash增加key value值
hlen
获取hash的长度
hget
获取某个hash里面key的value
hgetall
获取所有的键值对
hmset
批量增加键值对
hmget
批量获取键值对
hsetnx
给指定的hash增加键值对,如果原来的field存在,则操作无效,如果不存在,则新增
hkeys
获取hash表中所有的field
hvals
获取hash表中所有的value
hdel
删除hash表中的一个或者多个field-value
hexists
判断hash表中的field是否存在,如果存在,则为1,不存在则为0
hincrby
给hash表中的field增加指定的数值,只限于数字
hincrbyfloat
给hash表中的field增加指定的浮点,只限于数字
set
sadd
给集合添加值,如果值存在,则什么都不操作,如果值不存在,则添加
SMEMBERS
获取集合所有的成员
scard
获取集合的个数
sdiff
获取两个集合的差集,前面存在,但是后面不存在的
sinter
获取两个集合的交集
sunion
获取两个集合的并集
SISMEMBER
判断元素是否在集合中,如果存在,则为1,如果不存在则为0
smove
将指定的元素从一个集合移动到另外一个集合中,如果源集合存在,则移动,如果不存在,则忽略,如果目标集合存在,直接移动,如果目标集合不存在,则新建集合并移动
spop
随机删除指定个数的元素,并把删除的元素打印出来
SRANDMEMBER
随机获取指定个数的元素
- 默认随机获取一个
- 如果count > 0,
- 如果count大于集合的总数的话,则全部取出
- 如果count小于集合总数的话,则随机取出count个
- 如果count<0,则随机count的绝对值次取出值
srem
删除指定的一个或者多个元素