Redis常见命令
redis通用命令
- 通配符
*
,?
// 可以指带多个字符
redis> keys *name*
1) "lastname"
2) "firstname"
// 可以指带单个字符
redis> keys a??
1) "age"
在大数据量下或者生产环境下不建议使用keys去查询符合模板的所有key(集群模式下在从节点进行可以)
因为redis是单线程的,在大数据量下进行这种模糊匹配的查询会阻塞,进而影响到效率
- 删除命令 DEL 返回值是删除的数量
// 删除一个指定key
redis> DEL name
(integer) 1
// 删除多个指定key
redis> DEL name age
(integer) 2
当进行删除操作的时候如果要删除的key不存在在redis中,不会影响到删除操作的完成,redis只会删除redis中存在的key
- 判断key是否存在:exists,返回值只有0|1,1代表存在,0代表不存在
// 存在指定key
redis> EXISTS name
(integer) 1
- EXPIRE:给key设置有效期,到期后redis自动删除
// 设置指定key有效期为20s
redis> EXPIRE name 20
(integer) 1
- TTL:查看key剩余有效期 (当设置有效期的key过期后TTL结果为-2, 没有设置有效期的key的TTL结果为-1)
// 删除一个指定key
redis> TTL name
(integer) 11 // 剩余十一秒
String类型
-
常见命令:
- set:添加或修改已经存在的一个String类型键值对
- get:根据key值获取对应value
- mset:批量添加多个String类型键值对
- mget:批量获取多个key值所对应value
- incr:让整型value自增1
- incrby:让整型value自增自定义长度(负数也可以实现自减)
- incrbyfloat:让浮点型value自增自定义长度(必须设置自增步长)
- setnx:key不存在才添加
- setex:添加指定键值对,并设置有效期
对于项目中我们存储对象时,我们可以将对象序列化成JSON字符串从而进行存储
序列化对象进行redis存储
KEY | VALUE |
---|---|
centered test:user:1 | {“id”: 1, “name”: “xiaoming”, “age”: 21} |
Hash类型
在上一个String类型中我们谈到对对象进行存储时可以将对象转换成JSON形式进行存储,但这样也会产生一个问题,就是如果涉及到对象字段的修改时我们是很不方便的,这种时候就需要到Hash类型
hash结构
KEY | field(VALUE ) | value(VALUE) |
---|---|---|
test:user:1 | name | xiaoming |
age | 21 |
-
常见命令
- hset key field value:添加或修改hash类型key的field的值
- hget key field:获取一个hash类型key的field值
- hmset:批量添加多个Hash类型key的field值
- hmget:批量获取多个Hash类型key的field值
- hgetall:获取一个hash类型的key中的所有field和value
- hkeys:获取一个Hash类型的key中所有field
- hvals:获取一个hash类型的key中所有的value
- hincrby:让一个hash类型key的字段值自增并指定步长
- hsetnx:添加一个hash类型的key的field值,前提这个field不存在,否则不执行
List类型
特点
- 有序
- 元素可以重复
- 插入和删除快
- 查询速度相对一般
-
常见命令
- lpush key element …:向列表左侧插入一个或多个元素
- lpop key:移除并返回列表左侧第一个元素, 没有则返回nil
- rpush key element …:向列表右侧插入一个或多个元素
- rpop key:移除并返回列表右侧第一个元素
- lrange key start end:返回角标范围内所有元素
Set类型
特点
- 无序
- 元素不可以重复
- 查询快
- 支持交集,并集,差集等
-
常见命令
- sadd key element …:向set中插入一个或多个元素
- srem key element:移除指定元素
- scard key:返回set中元素的个数
- sismember key element:判断一个元素是否存在于set中
- smembers:获取set中的所有元素
- sinter key1 key2 …:求key1和key2 的交集
- sdiff key1 key2 …:求key1和key2 的差集
- sunion key1 key2 …:求key1和key2 的并集
SortedSet类型特点
- 可排序(根据score属性进行排序)
- 元素不可以重复
- 查询快
常见命令
: zadd key score element:添加一个或多个元素到sorted set,如果已存在则更新score值
: zrem key element:删除sortedset中指定元素
: zscore key element:获取sorted set中指定元素的score值
: zrank key element:获取sorted set中指定元素的排名
: zcard key:获取sorted set下指定key有多少个元素
: zcount key min max:统计score值在给定范围内的所有元素个数
: zincrby key increment element:让指定元素自增, 步长为指定的increment值
: zrang key min max:按照score排序后,获取指定排名范围内的元素(这里的min,max就是排名)
: zrangbyscore key min max:按照score排序后,获取指定score范围内的元素(这里的min,max就是分数)
: zdiff,zinter,zunion:求差集,交集,并集
以上涉及到排名的都是默认按照升序进行排序并且排名的返回值是默认从0开始计算的,如果要降序则在命令的z后面加上rev
//按照排名降序排序
zrevrang age 0 9