Redis基本数据类型

redis是现在非常流行的内存高速缓存数据库,Redis全称为:Remote Dictionary Server(远程数据服务),由一个意大利工程师使用C语言编写的Key-Value存储系统。

使用缓存数据库能够减少对数据库访问的压力,在高并发的时候会显得尤为重要。那么在多种缓存数据库中选择哪一种更适合呢?

和memcache对比

  • 如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择;
  • 使用简单的key-value存储的话,Memcached的内存利用率更高;
  • 由于Redis只使用单核(单线程),而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis;
  • Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。
  • Memcache做缓存,适合多读少写;Redis在读写效率要求都很高的情况下;

Redis核心对象

Redis核心对象是RedisObject


type代表一个value对象具体是何种数据类型,
encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的,当然前提是这个字符串本身可以用数值表示,比如:”123″ “456”这样的字符串。
只有打开了Redis的虚拟内存功能,vm字段字段才会真正的分配内存,该功能默认是关闭状态的。

Redis支持的数据类型

支持5种数据类型:String List Hash Set ZSet

String

底层实现:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr、decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

应用场景:String是最简单的类型,一个key对应一个value。

常用方法:set/get/decr/incr/mget等;


List

底层实现:链表结构,list就是Redis String的列表,按照插入顺序排序。

应用场景:微博中粉丝列表;还可以实现简单消息队列:可以利用List的PUSH操作,将任务存在List中,然后工作线程再用POP操作将任务取出进行执行。

常用方法:lpush/rpush/lpop/rpop/lrange等;

Hash

底层实现:Redis的Hash实际是内部存储的Value为一个HashMap。Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

应用场景:存储比较像关系型数据库的数据。

常用方法:hget/hset/hgetall等

Set

底层实现:set类型是一种无序类型,并且不可重复。set 的内部实现是一个 value永远为null的HashMap

应用场景:微博中将所有关注人都放到一个集合中,所有粉丝放到一个集合中,那通过不同的组合就能够很快返回给用户不同的结果集。共同关注、互相关注等。

常用方法:sadd/spop/smembers/sunion等;

ZSet

底层实现:类似于Set,但是Zset是有序集合。

应用场景:需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构;

常用方法:zadd/zrange/zrem/zcard等;

总结:根据项目的业务要求,选择了Redis作为缓存数据库,它不仅是一个存在于内存中,还可以把数据根据配置持久化保存到磁盘中。并且比Memcache支持更多的数据类型。使得有多种数据类型需求的系统能够更比Memcache高效使用这些。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值