(03)redis的5种数据类型及其基本操作

  redis支持5种数据类型:【字符串:String】、【散列(哈希):Hash】、【列表:List】、【集合:Set】、【有序集合:SortedSet(zset)】,下面分别介绍5中数据类型的常用命令以及应用场景。

  1、String类型

  (01)赋值:set key value

  (02)取值:get key 

  (03)先获取旧值、再设置新值:getset key value

  (04)多个赋值:mset key1 value1 key2 value2 key3 value3 ...

  (05)多个取值:mget key1 key2 key3 ...

  (06)删除key:del key

  (07)使值递增1:incr

  (08)使值递增n:incrby key n

  (09)使值递减1:decr

扫描二维码关注公众号,回复: 8347008 查看本文章

  (10)使值递减n:decrby key n

  (11)使值尾部追加:append key value

  (12)获取值的长度:strlen key

  应用场景:分布式数据库利用自增做主键,第一可以防止主键重复,第二也可以规定某个数据库的id范围,从第几开始。

  2、Hash类型

  (01)赋值:hset key field value

  (02)取值:hget key field

  (03)多个字段赋值:hmset key field1 value1 field2 value2 field3 value3 ...

  (04)多个字段取值:hmget key field1 field2 field3 ...

  (05)存在则修改、不存在则插入:hsetnx key field value

  (06)获取key的所有字段:hgetall key

  (07)删除key的某个字段:hdel key field

  (08)使key某个字段的值递增n:hincrby key field n

  (09)判断key的某个字段是否存在:hexists key field

  (10)获取某个key的所有字段名:hkeys key

  (11)获取某个key的所有字段值:hvals key

  (12)删除key:del key

  应用场景:设置商品信息,假如用String类型保存商品信息,修改的话要解析json、修改后再封装json保存。但是Hash类型则可以根据key的字段修改值。

  3、List类型 (redis中使用的双向链表)

  (01)向左端增加元素:lpush key value1 value2 value3 ...

  (02)向右端增加元素:rpush key value1 value2 value3 ...

  (03)查看下标在startindex 和 stopindex之间的元素:lrange key startindex stopindex,stopindex = -1 代表右边全部的

  (04)从左边返回并删除元素:lpop key

  (05)从右边返回并删除元素:rpop key

  (06)获取列表中元素的个数:llen key

  (07)根据值删除元素:lrem key count value(删除前count个值为value的元素)count>0从左边开始删,count<0右边开始,count=0删除全部。

  (08)根据下标值查找元素:lindex  key index

  (09)给指定的下标设置元素值:lset key index value

  (10)根据下标保留指定元素,删除其余的:ltrim key startindex stopindex

  (11)从左向右查找,在指定元素的左(before)右(after)插入元素:linsert key before|after findValue targetValue。

  (12)将元素从一个列表转移到另一个列表:rpoplpush fromkey tokey(又端弹出,左端压入)

  应用场景:存放商品的评论列表,key是商品编号,value是商品评论的json串,一个商品可以有好多评论。

  4、Set类型

  (01)添加元素:sadd key value1 value2 value3 value4 ...

  (02)删除元素:srem key value1 value2 value3 value4 ...

  (03)获取集合中所有元素:smembers key

  (04)判断元素是否在集合中:sismember key value

  (05)获取集合差集(属于A,不属于B的元素):sdiff keyA keyB

  (06)获取集合交集(属于A,也属于B的元素):sinter keyA keyB

  (07)获取集合并集(属于A、B中的全部元素):sunion keyA keyB

  (08)获取集合中元素的个数:scard key

  (09)从集合中随机弹出一个元素:spop key

  应用场景:根据集合与列表的区别,要求无序、不重复的可以用集合。

  5、SortedSet(zset)类型

  有序集合是在集合的基础上每个元素关联了一个分数,可以提供与分数有关的操作,如获取分数最高、最低的前n个元素,根据分数范围获取元素等。

  (01)添加元素:zadd key score value score2 value2 score3 value3 ...(如果元素存在,会用新分数替换旧分数)

  (02)获取指定元素的分数:zscore key value

  (03)删除指定元素:zrem key value

  (04)按照分数从小到大,返回下标范围之间的元素:zrange key startindex stopindex

  (05)按照分数从大到小,返回下标范围之间的元素:zrevrange key startindex stopindex

  (06)按照分数从小到大,返回下标范围之间的元素,并获取分数:zrange key startindex stopindex withscores

  (07)按照分数从大到小,返回下标范围之间的元素,并获取分数:zrevrange key startindex stopindex withscores

  (08)获取指定分数范围的元素:zrangebyscore key minScore maxScore [withscores]

  (09)获取指定分数范围的元素,从第offset个开始,总共取count个:zrangebyscore key minScore maxScore limit offset count [withscores]

  (10)增加某个元素的分数:zincrby key addScore value(给value增加addScore分)

  (11)获得集合中元素的数量:zcard key

  (12)获得指定分数范围为元素数量:zcount key minScore maxScore

  (13)按照排名范围删除元素:zremrangebyrank key startIndex stopIndex

  (14)按照分数范围删除元素:zremrangebyscore key minScore maxScore

  (15)从小到大获取元素的排名:zrank key value

  (16)从大到小获取元素的排名:zrevrank key value

  应用场景:商品销售排行榜,score是销售量、value是商品id

猜你喜欢

转载自www.cnblogs.com/javasl/p/12099041.html