目录
注意事项:
1、hset 的子key时无法设置过时时间的,只能对大key设置过期时间
0、getrange
1、sorted set
zadd test-zadd 15 key1 712 key2 1515 key3 41 key4 --增加test-zadd的有序结合,并为集合添加key1的值
zrange test-zadd 0 10 [withscores] - 从小到大到排序输出前11个的集合
zrevrange test-zadd 0 10 [withscores] -- 从大到小排序输出前11个集合
zcard test-zadd
zcount test-zadd
zrank test-zadd key3 -- 获取有序集合的索引
zrangebyscore test-zadd 1 200 [withscores] [limit 0 1] -- 查找给定范围值的集合
zincrby test-zadd 1 key5
2、list的应用
lpush test-push 1 -- 将数据添加加队列的头部 rpush 就时尾部
lpop --获取指定队列的头部数据并且删除,没有就等待
3、bit的应用
setbit test-bit 1 1 --设置bit的值!只能设置0和1
bitcount test-bit [start end] --获取test-bit "1" 的数量
4、lua脚本
eval "return {KEYS[1],ARGV[1]}" 1 test-set2 12
eval "return redis.call('set','test-set3',3)" 0 #redis.call返回调用者的一个错误
redis.pcall错误已lua表的形式返回
错误返回
eval "return redis.pcall('set',KEYS[1],KEYS[2])" 2 test4 4
evalsha "0fe98c355c13252efc0f8e931a2e42076d4d1282" 0
script flush #清除所有脚本缓存 !一般人不会去这么做的
script exists 校验码 #检验校验码是否存在
script load 脚本 #讲一个脚本加入缓存
script kill #杀死正在运行的脚本
注意:redis和lua的类型转换
5、对象类型和编码方式
int:8个字节的长整型。
embstr:小于等于39字节的字符串 #由于embstr是只读,所以进行修改时一定会变成 -> raw
raw:大于39字节的字符串
!注意:redisObject长度是16字节、sds长度是9字节 39 + 16 + 9 = 64 作用后面讲
list、sort set、set、hash 编码格式受下面两个参数的影响:
hash-max-ziplist-entries 512 #最大key的个数 !测试过程中256较佳
hash-max-ziplist-value 64 #最大键值长度 !1024
zset-max-ziplist-entries 128 # zset的key最大个数
zset-max-ziplist-value 64 # zet的key最大个数
set-max-intset-entries 512 # set的键值的长度
6、GEO地理位置应用
添加经纬度到某个key
geoadd hongong 114.191347 22.257719 1
返回给定两个位置的距离
geoadd china 114.191347 22.257719 hongkong
geoadd china 114.056093 22.537316 shenzhen
geodist china hongkong shenzhen km
# 结果:"34.0670"
获取给定位置半径内某个key 的所有位置元素
geoadd china 114.191347 22.257719 hongkong
geoadd china 114.056093 22.537316 shenzhen
# georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
georadius china 114.079439 22.469122 40 km withcoord
# 结果:
# 1) 1) "hongkong"
# 2) "26.1798"
# 2) 1) "shenzhen"
# 2) "7.9552"
georadius china 114.079439 22.469122 40 km withcoord
#结果:
# 1) 1) "hongkong"
# 2) 1) "114.19134467840194702"
# 2) "22.25771981598777671"
# 2) 1) "shenzhen"
# 2) 1) "114.05609160661697388"
# 2) "22.53731476818982316"
从key里面返回获取给定位置的(经度和纬度)
geoadd china 114.191347 22.257719 hongkong
geoadd china 114.056093 22.537316 shenzhen
geopos china hongkong shenzhen none
# 结果
# 1) 1) "114.19134467840194702"
# 2) "22.25771981598777671"
# 2) 1) "114.05609160661697388"
# 2) "22.53731476818982316"
# 3) (nil)
从key里面获取某个成员位置半径范围内的所有位置数据
georadiusbymember china hongkong 40 km
#结果
# 1) "hongkong"
# 2) "shenzhen"
7、stream
xadd <key> <ID> field name [ield name ...]
# 说明:
# 1、* 代表ID由redis自动为我们生成ID。需要显式指定ID的情况非常少见。
# 2、* Id的组成:<millisecondsTime>-<sequenceNumber>
xadd stream-test * name xiaoliao pwd 123456 -- 向stream中添加条目
xadd stream-test-num 1-2 name xiaoliao pwd 123456 -- 显示指定ID向stream添加条目
xlen <key>
xlan tream-test -- 查看stream的条目数量
xrange <key> start end [count num]
xrevrange <key> start end [count num]
# 说明:
# 1、- :代表最小ID
# 2、+ :代表最大ID
xrange stream-test - + count 2 -- 获取前面两个条目xrange stream-test 1568166601240-0 1568166601240-0 -- 获取ID范围间的条目
xrange stream-test 1568169363190 1568173028006 -- 获取时间戳范围的条目
xread [count num] [block milliseconds] <streams key> ID [ID ...]
说明:
1、$:代表已经存储的最大ID作为最后一个ID
2、millisecond的0:代表永久阻塞
xread block 10000 streams stream-test $ -- 阻塞获取最后一个条目
xgroup create key groupname id-or-$
xgroup setid key id-or-$
xgroup setid key id-or-$
xgroup destroy key groupname
xgroup delconsumer key groupname consumername
xgroup create stream-test xiaoliao $
xreadgroup group groupname consumer [count num] [block milliseconds] streams key [key ...] ID [ID ...]
说明:
1、> :消息到目前为止从未传递给其他消费者
2、不指定count : 会读取所有未读取的消息
xreadgroup group group-test xiaoliao block 0 streams stream-test >
xack key groupname ID -- 确认该消息已处理,不再是历史待处理消息
xack stream-test group-test 1568181147074-0
xpending key groupname [start-id end-id count] [consumer] -- 获取xreadgroup 但未ack的消息(即待处理消息总数)
说明:
1、返回:待处理消息总数、待处理消息start-id、待处理消息end-id
xpending stream-test group-test
xclaim key groupname consumer min-idle-time-ms ID [ID...]
xclaim stream-test group-test alice2 10000 1568178958105-0 - 获取ID为1568178958105-0 的消息
xinfo stream key
xinfo groups key
xinfo consumers key groupname
xinfo help
8、安全
修改redis.conf
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 rename-command info '' rename-command keys ''
空字符串 '' : 禁用命令
b840fc02d524045429941cc15f59e41cb7be6c52 : 将CONFIG 重命名为 b840fc02d524045429941cc15f59e41cb7be6c52