这篇blog主要总结下,redis中跟key相关的常用函数
1)keys
语法:keys pattern
解释:查找所有匹配指定模式pattern的key
- [root@xsf001 ~]# redis-cli
- redis 127.0.0.1:6379> keys * #所有key
- 1) "score"
- 2) "stu"
- 3) "score1"
- 4) "dest"
- 5) "lst.user"
- 6) "lst.tect"
- redis 127.0.0.1:6379> keys scor?
- 1) "score"
- redis 127.0.0.1:6379> keys scor[ee1]
- 1) "score"
语法:randomkey
解释:返回一个随机key
- redis 127.0.0.1:6379> randomkey
- "score"
- redis 127.0.0.1:6379> randomkey
- "list.user"
3)exists
语法:exists key
解释:判断一个key是否存在
- redis 127.0.0.1:6379> exists score #key存在 返回1
- (integer) 1
- redis 127.0.0.1:6379> exists scorefda #key不存在 返回0
- (integer) 0
语法:type key
解释:返回key所存储的值类型,返回值:none【key不存在】,string,list ,set, zset和hash
- redis 127.0.0.1:6379> type score
- zset
- redis 127.0.0.1:6379> type lst.user
- list
5)expire
语法:expire key seconds
解释:设置key的生存时间,单位是秒,当key过期时,会被自动删除
- redis 127.0.0.1:6379> expire dest 30
- (integer) 1
- redis 127.0.0.1:6379> expire dest1 30 # key不存在
- (integer) 0
6)ttl
语法: ttl key
解释:得到key能存活时间,如果key不存在或没有设置生存时间时,返回-1
- redis 127.0.0.1:6379> expire diff 100
- (integer) 1
- redis 127.0.0.1:6379> ttl diff
- (integer) 94
- redis 127.0.0.1:6379> ttl diff
- (integer) 92
语法:persist key
解释:移除给定key的生存时间
- redis 127.0.0.1:6379> ttl diff
- (integer) 28
- redis 127.0.0.1:6379> persist diff
- (integer) 1
- redis 127.0.0.1:6379> ttl diff
- (integer) -1
8)rename
语法:rename key newkey
解释:将key改名为newkey
- redis 127.0.0.1:6379> smembers diff
- 1) "zhangsan01"
- redis 127.0.0.1:6379> rename diff diff01
- OK
- redis 127.0.0.1:6379> smembers diff
- (empty list or set)
- redis 127.0.0.1:6379> smembers diff01
- 1) "zhangsan01"
- redis 127.0.0.1:6379> rename diff diff01
- (error) ERR no such key
9)renamenx
语法:renamenx key newkey
解释:当且仅当newkey不存在时,改名key
- redis 127.0.0.1:6379> renamenx diff01 stu #stu存在
- (integer) 0
- redis 127.0.0.1:6379> renamenx diff01 diff #diff不存在
- (integer) 1
10)del
语法:del key [key ...]
解释:删除一个或多个key
- redis 127.0.0.1:6379> del score1
- (integer) 1
- redis 127.0.0.1:6379> del union diff aa #key aa 不存在
- (integer) 2
语法:move key db
解释:将key移动到指定db
- redis 127.0.0.1:6379> smembers stu #默认0
- 1) "zhangsan01"
- 2) "wangwu"
- redis 127.0.0.1:6379> move stu 1 #移动到 1
- (integer) 1
- redis 127.0.0.1:6379> smembers stu
- (empty list or set)
- redis 127.0.0.1:6379> select 1 #选择db 1
- OK
- redis 127.0.0.1:6379[1]> smembers stu
- 1) "zhangsan01"
- 2) "wangwu"
语法:sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
解释:返回或保持给定列表,集合,有序集合key中经过排序的元素
- redis 127.0.0.1:6379> sort lst.tech limit 0 2 alpha desc #按字符集排序
- 1) "tec06"
- 2) "tec05"
- redis 127.0.0.1:6379> sort lst.stud
- 1) "1"
- 2) "2"
- 3) "3"
- redis 127.0.0.1:6379> sort lst.stud desc
- 1) "3"
- 2) "2"
- 3) "1"
- redis 127.0.0.1:6379> keys stu.*
- 1) "stu.name.2"
- 2) "stu.name.3"
- 3) "stu.level.1"
- 4) "stu.level.2"
- 5) "stu.level.3"
- 6) "stu.name.1"
- redis 127.0.0.1:6379> sort lst.stud by stu.level.* desc get stu.level.* get stu.name.*
- 1) "3"
- 2) "admin"
- 3) "2"
- 4) "joe"
- 5) "1"
- 6) "jim"
- redis 127.0.0.1:6379> sort lst.stud by stu.level.* asc get stu.name.*
- 1) "jim"
- 2) "joe"
- 3) "admin"
sort虽然很“厉害”,但尽量不要让redis服务器来sort大量的数据。可以通过设定阀值减少要sort的数据,或把排序操作向前移,在web服务器或各个应用上来sort。