1 前言
Redis是一个开源的,使用ANSI C 编写的,高性能Key-Value的NoSQL数据库。所以很有必要了解了解redis的key和value。
2 Redis的键key
2.1 key的类型
redis的key 值是字符串储存的,这意味着可以用任何文本作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。
注意:空字符串也是有效key值。
2.2 key取值规范
i. 键值不需要太长,首先消耗内存过多,其次键值计算成本较高(查询耗时长)。
ii. 键值不宜过短,可读性较差,通常建议 见名知意。
2.2.1 取值举例
将如下数据库表数据,转换为redis的key-value存储。
127.0.0.1:6379> set user:id:1:username lisi
OK
127.0.0.1:6379> set user:id:1:password 111111
OK
127.0.0.1:6379> set user:id:1:email lisi@163.com
OK
127.0.0.1:6379> keys user:id:1* #查找有几个属性
1) "user:id:1:password"
2) "user:id:1:username"
3) "user:id:1:email"
2.3 Key相关命令
说明:如果想要对key进行操作(增删改查等等),需要使用redis提供好的关键字:set、del、get、exists等等,因此需要学习关键字的使用。如下:
命令 说明
set key value 设置key-value键值对
del key 删除一个key
del key1 key2 key3 删除多个key
incr key 将 key对应的value中储存的数字值增一,然后返回。
注意:
[1]如果这个key不存在,那么key的值会先被初始化为0,然后再执行incr操作。
[2]如果这个key对应的value值不是数字,则会返回一个错误。
incrby key step 将key对应的value值增加指定的step。
注意:类似同incr。
decr key 将 key 对应的value中储存的数字值减一,然后返回。
注意:类似同incr。
decrby key decrement 将key减少对应的步长值。
注意:类似同incr。
get key 获取key对应的value值,如果key不存在,则返回nil
mget key1 key2 key3 一次获取多个key的值,如果对应key不存在,则对应返回nil
keys pattern (模糊查找) 查找所有符合给定pattern的key。如下:
[1]keys * 匹配数据库中所有 key 。
[2]keys n?me 匹配 name、neme、nfme 等。
[3]keys n* 匹配 name、neme、naaaaame等。
[4]keys n[ae]me 只能匹配 name、neme。
exists key 检查给定key是否存在。
注意事项:不支持通配符
ttl key (time to live) 查看某个key的剩余过期时间,返回值:
-2 表示这个key已经过期,需要删除掉
-1 表示没有设置过期时间
其它 表示剩余的生存时间,单位为秒
expire key second 指定key的过期时间。
注意:新添加的key,如果没有指定过期时间,则会一直保存。
可以对一个已经带有生存时间的key执行expire命令,
新指定的生存时间会取代旧的生存时间。
rename k