Redis常用的数据结构实战解析

提到redis的常用数据结构,很多人都知道有常用的5中基础结构:字符串,列表 , 哈希 , 集合,  有序集合。其实就是String,list,hash,set,zset.

在平常的开发中这5中基本够用了,还有在面试中回到出这5个也没毛病。那么基于这些常用的数据结构有那些操作方法呢?

首先可以基于jedis这个java客户端来讲,他的方法基本和redis的原生命令command一致,例如:jedis.hset(...);这里的hset方法就是和redis操作哈希的命令一样:

上图就是redis的原生操作。

1、字符串(String)

  • 字符串常用的方法命令有:
  • set(k,v) ,
  • set(k,v,ex|px,nx,xx,expires),
  • mset(Object...kv)
  • mget(Object...k)
  • 基本对于字符串操作这几个就够用,常用多的是业务中把数据 json化字符串缓存起来。

2、列表(List)

  • lpush(k,v)   在一个列表中从左面塞入数据
  • lpop(k)   在列表的左面获得一次获得数据(在list中移除数据)
  • rpush(k,v)  同理上面的这是从右面塞入数据
  • rpop(k)
  • blpop(k,timeout) 这里的意思是bolckleftpop,阻塞pop获取数据,也有两个参数的方法可以选择timeout阻塞的超时时间
  • brpop(k,timeout)
  • lset(k,index,v) 从左到右 修改列表第index下标的数据
  • lindex(k,index) 从左到右获得列表第index下标的数据
  • lrange(k,start,end)  从左到右获得列表start - end 下标的范围的所有数据
  • 上述就是有关列表相关常用的方法,基本够用了。

3、哈希(hash)

  • 哈希呢首先说下,他的特点是能够修改hash这个数据结构中的某个字段,就类似于一个对象,我可以setXX(xxx)方法类似
  • hset(k,filed,v)  这里的参数意思是  filed 这个hash数据结构中的一个属性名称
  • hmset(k,v) 这里的v可是个对象包含很多属性,或者是个map<k,v>的,操作多个属性值
  • hdel(k,filed) 删除hash结构中某个属性
  • hget(k,filed) 获得hash结构中某个属性的值
  • hkeys(k)  获得hash结构中所有属性的名称类似于map,keySet()方法
  • hgetall(k)  获得整个hash的结构k,v都获得
  • 上述这几个方法就是咱们常用的,平常的开发也够用了

4、集合(set)

  • 这个集合就是类似于java中的set,不允许重复的数据
  • sadd(k,v) 
  • srem(k,v)  删除set中的某个item value
  • scard(k)  统计这个集合有多少个元素,count的意思
  • sismeember(k,item)  查看item是否在set集合中
  • srandmerber(k)  随机返回一个元素(不删除)
  • spop(k) 返回一个元素(删除)
  • smember(k) 返回所有元素
  • sunion(k1,k2)  返回俩个set集合的交集元素
  • sdiff(k1,k2)  返回两个set集合的不同元素
  • 上述的集合方法是常用的一些方法。

5、有序集合(zset)

  • 首先zset他是个有序的不重复的集合,他有个特殊的字段score分值,根据这个在redis中正序排列
  • zadd(k,score,v [score ,v ...]) 添加 key , score , v ...   可以多个添加
  • zcard(k) 统计count数
  • zscore(k,v) 获得zset中v元素的score值
  • zrem(k,v) 删除zset中的v
  • zrank(k,v) 返回zset集合中v的index下标位置,正序算
  • zrevrank(k,v) 返回zset集合中v的index下标位置,倒序算
  • zincrby(k,incrscore,v)  在zset集合中给v元素自增incrscore个分值
  • zrange(k,start,end)  根据下标返回zset集合元素正序排列返回
  • zravrange(k,start,end)  根据下标返回zset集合元素倒序排列返回
  • zrange(k,start,end,withscores) 根据下标返回zset集合元素+分值score正序排列返回
  • zrevrange(k,start,end,withscores)  根据下标返回zset集合元素+分值score倒序排列返回
  • zrangebyscore(k,min,max)  这里是根据分值的范围返回正序结合结果
  • zrevrangebyscore(k,max,min)  这里是根据分值的范围返回倒序结合结果
  • zcount(k,min,max)  这里是根据分值的范围返回集合的count数
  • 上述的方法是常用的zset数据结构方法,比较常用,场景用的很多地方,例如排行榜之类的很方便使用

 

6、除了常用的5中数据结构还有其他常用的有bitmaps, hyperloglog, 尤其是bitmaps位图数据结构很方便,相关可以查看书籍

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值