Redis常用指令(不定期更新)
查询常用
切换redis数据库
语法:
SELECT 数据库索引
切换索引1库
SELECT 1
默认使用索引0库
查询指定key的类型
语法:
TYPE key值
查询key为【TEST】的set类型值数量
TYPE TEST
返回值列表:
类型 | 描述 |
---|---|
string | 字符串类型,是Redis中最基本的数据类型。 |
list | 列表类型,可以存储一个有序的字符串序列。 |
set | 集合类型,可以存储一个无序的字符串集合。 |
zset (sorted set) | 有序集合类型,每个成员关联一个分数(score),成员按分数排序。 |
hash | 哈希类型,类似于map或字典,能够存储键值对。 |
stream | 流数据类型,主要用于存储日志或事件流数据。 |
none | 表示键不存在。 |
查询指定key的set类型值数量
语法:
SCARD key值
查询key为【TEST】的set类型值数量
SCARD TEST
查询指定key的set类型所有值
语法:
SMEMBERS key值
查询key为【TEST】的set类型所有值
SMEMBERS TEST
查询指定key的set类型是否存在某值
语法:
SISMEMBER key值
查询key为【TEST】的set类型是否存在某值
SISMEMBER TEST
如果存在,返回值为 ,不存在返回0。
查询指定key的【单个】hash类型值
语法:
HGET key值 hash-key值
查询key为【TEST】的hash-key为【lala】的值
HGET TEST lala
查询指定key的【多个】hash类型值
语法:
HMGET key值 hash-key值 hash-key值
查询key为【TEST】的hash-key为【lala】、【haha】的值
HMGET TEST lala haha
查询指定key的string类型值
语法:
GET key值
查询key为【TEST】的值
get TEST
查询指定key的list类型值
语法:
LRANGE key值 list开始索引 list结束索引
查询key为【TEST】的list值列表
LRANGE TEST 0 1000
如果结束索引为 -1 ,那就会展示所有元素。
查询指定key的list元素数量
语法:
LLEN key值
查询key为【TEST】的list值列表
LLEN TEST
查询指定前缀key的数量
语法:
EVAL “return #redis.call(‘keys’,‘TEST前缀
*’)” 0
查询【TEST前缀】的key数量
EVAL "return #redis.call('keys','TEST:*')" 0
键事件操作
具体场景描述及使用见文章:【Redis键值变更通知机制的配置及使用】
键通知配置主要是为了监听redis键的各种状态:过期、删除等命令,如果有这种业务需求,就需要通过以下配置开启键通知配置。
查看键空间事件
# 查看已开启的键事件
config get notify-keyspace-events
开启键空间通知
临时修改
注意:redis重启配置会还原
# 打开键过期的事件通知
例:config set notify-keyspace-events "Ex"
永久修改
redis.conf配置文件新增如下配置:
notify-keyspace-events Ex
bitmap 使用
指定偏移量位值
语法:
setbit key offset value
设置或清除指定偏移量上的位(bit)。offset 是从0开始的位索引,value 可以为 0 或 1
SETBIT bits-1 0 1
SETBIT bits-1 3 1
# bits-1 = 1001
SETBIT bits-2 0 1
SETBIT bits-2 1 1
SETBIT bits-2 3 1
# bits-2 = 1011
获取指定偏移量位值
语法:
getbit key offset
返回指定偏移量上的位值
BITOP AND and-result bits-1 bits-2
GETBIT bits-1 3 # and-result = 1001
(integer) 1
GETBIT bits-1 1
(integer) 0
将多个key进行位运算
语法:
bitop operation destkey key [key...]
对一个或多个保存二进制位的字符串key进行位元操作,并将结果保存到destksy上
operation可以是AND、OR、NOT、XOR
这四种操作中的任意一种:
- bitop and destkey key [key…]对一个或者多个key求逻辑并,并将结果保存到destkey
- bitop or destkey key [key…]对一个或者多个key求逻辑或,并将结果保存到destkey
- bitop xor destkey key [key…]对一个或者多个key求逻辑异或,并将结果保存到destkey
- bitop not destkey key [key…]对给定key求逻辑菲,并将结果保存到destkey
SETBIT bits-1 0 1
SETBIT bits-1 3 1
# bits-1 = 1001
SETBIT bits-2 0 1
SETBIT bits-2 1 1
SETBIT bits-2 3 1
# bits-2 = 1011
# 对bits-1、bits-2两个二进制数进行与运算,并将结果存储到and-result
BITOP AND and-result bits-1 bits-2
# and-result = 1001
# 获取and-result某位的二进制数
GETBIT and-result 0
(integer) 1
GETBIT and-result 1
(integer) 0
GETBIT and-result 2
(integer) 0
GETBIT and-result 3
(integer) 1
查询指定位索引范围key中某位值首次出现的索引
语法:
bitpos key bit [start] [end]
setbit m 7 1
setbit m 15 1
setbit m 23 1
# m = 00000001 00000001 00000001 3字节24位
# 获取m 索引1~1字节(8~15位)中位值为0首次出现的索引
bitpos m 0 1 1
# 返回8
# 获取m 索引0~1字节(0~15位)中位值为0首次出现的索引
bitpos m 0 0 1
# 返回0
# 获取m 索引2~2字节(16~23位)中位值为0首次出现的索引
bitpos m 0 2 2
# 返回16
# 获取m 索引2~2字节(16~23位)中位值为1首次出现的索引
bitpos m 1 2 2
# 返回23
# 获取m 索引1~2字节(8~23位)中位值为1首次出现的索引
bitpos m 1 1 2
# 返回15
# 获取m 索引5~5字节(32~39位)中位值为1首次出现的索引
bitpos m 0 5 5
# 返回-1
注意:
1. 语法中的start、end参数单位是字节,1字节=8位,所以,0就代表索引0~7位,1就代表索引8~15位,这个大家要注意。
2 如果返回的索引值为 -1 意为范围内没有出现过该位值。
3. 添加start、end参数后返回的索引值是位在 key 中的索引值。
查询指定位索引范围key中位值为1的数量
语法:
bitcount key bit [start] [end]
setbit m 7 1
setbit m 15 1
setbit m 23 1
# m = 00000001 00000001 00000001 3字节24位
# 获取m 索引0~1字节(0~15位)中位值为1的数量
bitcount m 0 1
# 返回2
# 获取m 索引1~1字节(8~15位)中位值为1的数量
bitcount m 1 1
# 返回1
# 获取m 索引1~3字节(8~31位)中位值为1的数量
bitcount m 1 3
# 返回2
# 获取m 索引1~2字节(8~23位)中位值为1的数量
bitcount m 1 2
# 返回2
# 获取m 索引2~2字节(16~23位)中位值为1的数量
bitcount m 2 2
# 返回1
注意:语法中的start、end参数单位是字节,1字节=8位,所以,0就代表索引0~7位,1就代表索引8~15位,这个大家要注意。