Redis key
redis的key
主要有设置生存时间 过期时间 存在 删除 改名
ttl 查看生存时间 rename 改名 type key 查看类型 del 删除
每个命令都是原子的
应用场景
手机验证码 过期 商品促销 限制访问的次数
key的命名规范
非关系型数据库的数据之间没有关联 所以key要保持规范 来确定之间的关系
- key不要太长 最好不要超过1024字节 太长了不仅消耗内存 而且降低查找的效率
- 不要太短 没有可读性
- 在一个项目中 使用统一的命名格式 例如user:123:password 来表示key之间的关联性 使用冒号来分隔
- 区分大小写
string类型
string 数据类型 是最简单的 不仅是字符串 也可以是数字 等很多种类型的特殊类型 二进制安全 可以是图片的码流
set key value 设置key的值 多次设置会覆盖
setnx 如果不存在 设置 返回1 如果存在 就不设置 返回0
setex key 10 lixin 设置key的值为lixin 10s后过期
del key-name 删除指定的key 如果存在 返回数字类型
GETSET key value 用于设定key的值 并且返回key的旧值 当key不存在 返回nil
STRLEN 返回字符串的长度
mset k1 v1 v2 v3 批量写
mget k2 v1 v2 v3 批量读
incr key 1 如果不存在 一样增加
decr key
string的应用场景
- 通常用于保存单个字符串或json的值
- 因为string是安全的 可以把图片作为string存储
- 计数器 微博数字 粉丝数字
hash类型
hash类型是string类型的field和value的映射表 适用于存储对象 比村委会String类型占用更少的空间
hset key field value 单个赋值
hmset key field1 value1 field2 value2 可以存多个值
hget key field 取出单个
hmget key field1 field2
list类型
lpush 从左边添加 a b c d e ⇒ e d c b a
rpush 从右边添加 a b c d e ⇒ e d c b a
lrange key 0 -1 遍历全部的数据 -1表示倒数第一 -2 倒数第二
lpop 左删除
rpop 右删除
b开头的删除 表示无数据阻塞
修改指令
lset key index value 设置key的索引
linsert key before|after index value 在某个索引之前或后面 添加值
高级命令
rpoplpush source destination 移除列表的最后一个元素 添加到另一个的左边