Redis key

redis的key

主要有设置生存时间 过期时间 存在 删除 改名
ttl 查看生存时间 rename 改名 type key 查看类型 del 删除
每个命令都是原子的

应用场景

手机验证码 过期 商品促销 限制访问的次数

key的命名规范

非关系型数据库的数据之间没有关联 所以key要保持规范 来确定之间的关系

  1. key不要太长 最好不要超过1024字节 太长了不仅消耗内存 而且降低查找的效率
  2. 不要太短 没有可读性
  3. 在一个项目中 使用统一的命名格式 例如user:123:password 来表示key之间的关联性 使用冒号来分隔
  4. 区分大小写

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
Redis key

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 移除列表的最后一个元素 添加到另一个的左边