Redis常用五大数据类型

五大数据类型常用的命令(此处只介绍常用命令更多命令请参考https://www.redis.net.cn/tutorial/3505.html):

 Key(键):

  keys *             查看当前库全部key名称。
  exists key          判断某个key是否存在。存在返回1,不存在返回0。
  move key db           把当前库某个key移到指定库。
  expire key second       为指定的key设置过期时间,单位为秒。
  ttl key            查看指定key还有多少秒过期,-1表示永不过期,-2表示已过期(如果过期该key会被移出库)。
  type key             查看你的key是什么数据类型。
  del [key…]          删除指定key,可同时删除多个。

 

 

 1.string(字符串):

  string类型是redis最基本的数据类型,redis中一个字符串value最多可以是512M。
  string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。

 

  set        设置一个key-value。
  get        获取一个key的value。
  del        删除一个或多个key-value。
  append      对指定key的value追加值。
  strlen       获取指定key的value的长度。
  incr        对指定key的value每次加1。 一定要是数字才能进行加减。
  decr       对指定key的value每次减1。 一定要是数字才能进行加减。
  incrby       对指定key的value每次加n(数量可指定)。 一定要是数字才能进行加减。
  decrby         对指定key的value每次减n(数量可指定)。 一定要是数字才能进行加减。
  getrange     获取指定key的value的指定区间范围内的值,类似于java的substring。
  setrange     设置指定key的value的指定区间范围内的值,原区间范围的值会被覆盖。
  setex(set with expire)      设置一个key-value并指定该key的过期时间(秒)。
  setnx(set if not exist)      设置一个key-value,如果该key存在则不设置,如果不存在则设置。
  mset        设置一个或多个key-value。
  msetnx       设置一个或多个key-value,如果key都不存在则设置,如果其中有一个key存在则不设置。
  mget        获取一个或多个key的value。
  getset         获取一个key(key必须存在)并设置该key的值,返回原来的值。

 

 

 2.hash(哈希,类似java里的Map):

  redis hash 是一个键值对集合。redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

  类似Java里面的Map<String,Object>。KV模式不变,但V是一个键值对

 

  hset      添加一个hash集合并往里面添加一对KV。
  hget      获取hash集合某个Key的数据。
  hmset     添加一个hash集合并往里面添加N对KV。
  hmget     获取hash集合N个Key的数据。
  hgetall     获取hash集合全部的KV数据。
  hdel      移除hash集合中的N个Key。
  hlen      获取hash集合中Key的数量。
  hexists     判断hash集合中某个Key是否存在。
  hkeys     获取hash集合全部Key。
  hvals     获取hash集合全部Value。
  hincreby   给hash集合中的某个key加N。 一定要是数字才能加,加整数。
  hincrebyfloat 给hash集合中的某个key加N。 一定要是数字才能加,加整数或小数。
  hsetnx    添加一个hash集合并往里面添加一对KV(如果key不存在则添加,存在则不添加)。

 

 

 3.list(列表):

   redis list 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层实际是个链表。

 

  说明:l(left)、r(right),将结构理解为栈,l表示栈顶、r栈底。
  lpush      添加一个list列表,将一个或多个值插入到列表头部,先进后出。
  rpush      添加一个list列表,将一个或多个值插入到列表尾部,先进先出。
  lrange      获取list列表指定区间范围内的值。
  lpop      移除list列表顶部元素(第一个元素),并返回被移除的元素。
  rpop      移除list列表底部元素(最后一个元素),并返回被移除的元素。
  lindex     按照顶部索引下标获得元素。
  llen      获取list列表的长度。
  lrem      移除list列表N个value。(lrem key count value)。
  ltrim      截取list列表指定范围内的值后再赋值给list列表(原值将被截取值覆盖)。
  rpoplpush   将指定列表的底部元素移到目标列表的顶部。
  lset      设置列表指定下标的值。
  linsert    在指定列表的某个元素前面或后面添加元素。(linsert key before/after 列表中的元素 添加的元素)。

  list列表总结:
   它是一个字符串链表,left、right都可以添加。
   如果键不存在,创建新的链表。
   如果键已存在,新增内容。
   如果值全移除,对应的键也就消失了。
   链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就比较低了。

 

 

 4.set(集合):

    redis set是string类型的无序集合。它是通过HashTable实现的。

 

  sadd        将一个或多个成员插入到set集合中。
  smembers     遍历set集合。
  sismember      判断指定元素是否是set集合的成员。
  scard        获取set集合中元素的个数。
  srem        移除set集合中N个元素。
  srandmember    随机获取set集合中N个元素。
  spop        随机移除set集合中N个元素并返回被移除的元素。
  smove       将指定集合中的某个元素移到目标集合中。
  sdiff        集合的减集。
  sinter        集合的交集。
  sunion      集合的并集。

 

 

 5.zset(sorted set:有序集合):

  redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。
  redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

 

  zadd          将一个或多个成员插入到zset集合中。(zadd key 分数 值…)例如:[zadd zset1 80 zhangsan]。
  zrange         获取zset集合指定区间范围内的值(zrange key start stop [withscores])。加withscores可查看分数与值
  zrangebyscore       获取zset集合指定分数范围内的值(zrangebyscore key [(]min [(]max [limit offset count]),“(”表示不包含。
  zrem          移除zset集合中N个元素。
  zcard          获取zset集合中元素的个数(不包含分数,分数和元素是一体的)。
  zcount        获取zset集合指定分数范围内的个数。
  zrank          获取zset集合某个元素的下标。
  zscore         获取zset集合某个元素对应的分数。
  zrevrank        逆序获取zset集合某个元素的下标。
  zrevrange      逆序获取zset集合指定区间范围内的值。
  zrevrangebyscore    逆序获取zset集合指定分数范围内的值。

 

点赞