Redis各个数据类型的使用场景,redis数据类型及应用场景

提供五种数据类型:String,hash,list,set及zset(sortedset) 。应用场景:Redis牺牲了常规数据库中的数据表、复杂查询等功能,换来了很大的性能提升,特别适合那些对读写性能要求极高,且数据表结构简单(key-value、list、set之类)、查询条件也同样简单的应用场景 。
Redis是啥?

Redis各个数据类型的使用场景,redis数据类型及应用场景


想要了解Redis,先从Redis是什么?为何要用Redis?有哪些特性,以及其集群架构来几个方面来了解 。Redis 简介Redis 是一个开源(BSD 许可)的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件 。为什么要用 Redis在高并发场景下,如果需要经常连接结果变动频繁的数据库,会导致数据库读取及存取的速度变慢,数据库压力极大 。
因此我们需要通过缓存来减少数据库的压力,使得大量的访问进来能够命中缓存,只有少量的需要到数据库层 。由于缓存基于内存,可支持的并发量远远大于基于硬盘的数据库 。所以对于高并发设计,缓存的设计是必不可少的一环 。而 Redis 作为比较热门的内存存储系统之一,由于其对数据持久化的支持,种类丰富的数据结构,使其定位更倾向于内存数据库,适用于对读写效率要求都很高、数据处理业务复杂和对安全性要求较高的系统 。
Redis 特征单线程,利用 redis 队列技术将访问变为串行访问,消除了传统数据库串行控制的开销 。Redis 的线程模型:Redis 支持数据的持久化,包括 RDB 的全量持久化,或者 AOF 的增量持久化,从而使得Redis 挂了,数据是有机会恢复的 。也可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用 。
分布式架构,读写分离 。支持的数据结构丰富 。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list、set、zset、hash 等数据结构的存储 。Redis 支持数据的备份,提供成熟的主备同步,故障切换的功能,从而保证了高可用 。Redis Cluster 架构Redis 搭建方式有很多种,本章主要介绍 Redis Cluster 集群构建方式:Redis 3.0 之后版本支持 Redis Cluster 集群,Redis Cluster 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接 。
Redis Cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉 。主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的 SORT 就可以由从服务器来承担 。
redis有哪些数据类型?
Redis各个数据类型的使用场景,redis数据类型及应用场景


Redis中的所有 value 都是以 Object 的形式存在的,其通用结构如下:typedef struct redisObject {unsigned [type] 4;unsigned [encoding] 4;unsigned [lru] REDIS_LRU_BITS;int refcount;void *ptr;} robj;type:指类型,String、Hash、List、Set、ZSet;encoding:类型具体的实现方式;比如 Set 是用 hashTable 实现还是 intSet 实现;lru:最后一次被访问的信息,其实一看到 LRU 估计也就和淘汰策略有关;refcount:对象引用计数;ptr:指向实际实现者的地址;StringRedis 中的 String 不仅仅表示 字符串,还可以表示 整型、浮点型 。
String 的编码可以是 int、raw 或者 embstr;单说普通的字符串,就有 raw 和 embstr 两种实现方式,embstr 是 Redis 3.0 新增的数据结构:字符串长度小于 39 字节,就用 embstr 对象,否则用传统的raw对象(Redis 3.2版本之后,这里变成了以 44 字节为分界) 。

推荐阅读