redis读后感

  redis初略的看了下源代码,其中的数据结构对我的感触比较深,和自己项目用到的cache比较了一下,写下此文。

  redis数据结构很丰富:String,List,Hash,Set,SortSet,而一般的cache只是个kv,也就是个hash。

  redis支持这些数据结构很简单,把一般cache系统的key也进行了管理,把key也放在一个数据结构里面,这样可以对key进行一些计算,比如hash很难做到的范围查找等。

 redis String可以认为是一般cache的hash。其他的数据结构一般都是key-subkey-value的形式,这样做的话通过key可以得到subkey-value,而subkey-value才是redis真正的数据结构。这让我想到,一般的kv系统自己实现包装一层数据结构的话,也能达到redis的效果。

List:也设计成key-subkey-value的形式。 一层key/value设计成key/subkey-value;另外key需要保存下来,因为可能需要一些统计功能,范围查找等,所以再设计一个key/value,key的具体值为list-key,value的值则为key-subkey-value中的key。 subkey-value设计成一个List,可以是排序的List,先进先出的List等等。比如:user:userid:123  user:userid:234;class:classid:123  class:classid:234插入后,两个kv表现为: 一个为list-key/user class;另外一个为user/ userid list和class/classid list.

Hash:  和List做法相似subkey-value为Hash即可。

Set:不太一样是key-value的形式,所以value是个set,也就是set value时,先取得value,是个set,然后修改set重新set回去。

SortSet:和Set相似,只是排序的,可以另外再定义一个数据结构进行排序字段的存储。

 

当然,自己封装会有很多问题,比如所有的数据都要从cache拿出来,修改后再put回去,网络的开销是很大的,也不能保证是原子操作,另外封装的数据结构的容量也不容小视;实际使用时还有很多要考虑。

转载于:https://www.cnblogs.com/nod0620/archive/2011/12/12/2284552.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值