Redis数据类型

文章目录

    • RedisKey基本命令
    • String字符串
    • List列表
    • Set集合
    • Hash哈希
    • Zset有序集合
    • Geospatial地理位置
    • Hyperloglog基数统计
    • Bitmap位图场景

RedisKey基本命令

  • set name daq 设置key
  • keys * 查看所有的key
  • get name 获取到key
  • EXISTS name 判断当前的key是否存在
  • move name 1 移除当前的key
  • EXPIRE name 10 设置key的过期时间,单位是秒
  • ttl name 查看当前key的剩余时间
  • type name 查看当前key的一个类型

String字符串

  • APPEND key1 "hello" 追加字符串,如果当前key不存在,就相当于setkey
  • STRLEN key1 获取字符串的长度
  • set views 0 初始浏览量为0
  • incr views 自增1 浏览量变为1
  • decr views 自减1 浏览量-1
  • INCRBY views 10 可以设置步长,指定增量
  • GETRANGE key1 0 3 截取字符串 [0,3]
  • GETRANGE key1 0 -1 获取全部的字符串和 get key是一样的
  • SETRANGE key2 1 xx 替换指定位置开始的字符串!
  • setex (set with expire)设置过期时间
  • setnx (set if not exist) 不存在设置(在分布式锁中会常常使用!)
  • mset k1 v1 k2 v2 k3 v3 同时设置多个值
  • mget k1 k2 k3 同时获取多个值
  • msetnx k1 v1 k4 v4 msetnx 是一个原子性的操作,要么一起成功,要么一起失败
  • 对象
    set user:1 {name:zhangsan,age:3} 设置一个user:1 对象值为 json字符来保存一个对象
    这里的key是一个巧妙的设计: user:{id}:{filed}
  • getset db redis 如果不存在值,则返回nil
  • getset db mongodb 如果存在值,返回原来的值,并设置新的值。
  • String类似的使用场景:
  1. 计数器
  2. 统计多单位的数量
  3. 粉丝数
  4. 对象缓存存储

List列表

  • redis里面,可以把list当成,栈、队列、阻塞队列!
  • 所有的命令都是L开头的
  • LPUSH list one 将一个值或者多个值,插入到列表头部(左)
  • Rpush list righr 将一个值或者多个值,插入到列表位部(右)
  • LRANGE list 0-1 获取list中值
  • LRANGE list 0 1 通过区间获取具体的值
  • Lpop list 移除list的第一个元素
  • Rpop list 移除list的最后一个元素
  • lindex list 1 通过下标获得 list 中的某一个值
  • Llen list 返回列表的长度
  • lrem list 1 one 移除list集合中指定个数的value,精确匹配
  • 总结
  1. 他实际上是一个链表,before Node after , left,right 都可以插入值
  2. 如果key 不存在,创建新的链表
  3. 如果key存在,新增内容
  4. 如果移除了所有值,空链表,也代表不存在
  5. 在两边插入或者改动值,效率最高,中间元素,相对来说效率会低一点

Set集合

  • set中的值是不能重读的!
  • sadd myset "hello" set集合中添加元素
  • SMEMBERS myset 查看指定set的所有值
  • SISMEMBER myset hello 判断某一个值是不是在set集合中
  • scard myset 获取set集合中的内容元素个数
  • srem myset hello 移除set集合中的指定元素
  • set无序不重复集合。抽随机!
  • SRANDMEMBER myset 随机抽选出一个元素
  • SRANDMEMBER myset 2 随机抽选出指定个数的元素
  • spop myset 随机删除一些set集合中的元素
  • smove myset myset2 "kuangshen"将一个指定的值,移动到另外一个set集合
  • SINTER key1 key2 取交集,共同好友就可以这样实现

Hash哈希

  • Map集合, 本质和String类型没有太大区别,还是一个简单的key-vlaue!
  • hset myhash field1 kuangshen set一个具体 key-vlaue
  • hget myhash field1 获取一个字段值
  • hmset myhash field1 hello field2 world set多个 key-vlaue
  • hmget myhash field1 field2 获取多个字段值
  • hgetall myhash 获取全部的数据
  • hdel myhash field1 删除hash指定key字段!对应的value值也就消失了
  • hlen myhash 获取hash表的字段数量
  • HEXISTS myhash field1 判断hash中指定字段是否存在
  • hkeys myhash 只获得所有field
  • hvals myhash 只获得所有value
  • hset myhash field3 5 指定增量
  • hsetnx myhash field4 hello 如果不存在 则可以设置
  • hsetnx myhash field4 world 如果存在则不能设置
  • hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息, hash 更适合于对象的存储,String更加适合字符串存储

Zset有序集合

Geospatial地理位置

Hyperloglog基数统计

Bitmap位图场景

你可能感兴趣的:(数据库相关)