redis数据类型选择

Redis是一个开源的底层使用C语言编写的key-value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。而且支持丰富的数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)

一.Redis集群介绍

   1.主从模式
               主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。
               从数据库一般是只读的,并接受主数据库同步过来的数据。

   2.哨兵
             哨兵的作用就是监控redis主、从数据库是否正常运行,主出现故障自动将从数据库转换为主数据库,是在主从模式下的进                一步优化.
            主数据库宕机时,向从数据库中选举master
               *优先级高的选为master
              *优先级一样,就选id小的选为master

   3.集群
              集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。
              redis每个实例也是全量存储,每台redis存储不同的内容。

           我们项目组的选择是主从模式+哨兵

二.Redis特点

   1 、Redis是纯内存操作,需要的时候需要我们手动持久化到硬盘中
          2、 Redis是单线程,从而避开了多线程中上下文频繁切换的操作。
          3、 Redis数据结构简单、对数据的操作也比较简单
          4、 使用多路I/O复用模型,非阻塞I/O

三.Redis在项目中的应用场景

1缓存数据

最常用,对经常需要查询且变动不是很频繁的数据 常称作热点数据。

2、消息队列

相当于消息订阅系统,比如ActiveMQ、RocketMQ。如果对数据有较高一致性要求时,还是建议使用MQ)

3、计数器

比如统计点击率、点赞率,redis具有原子性,可以避免并发问题

4、电商网站信息

大型电商平台初始化页面数据的缓存。比如去哪儿网购买机票的时候首页的价格和你点进去的价格会有差异。

5、热点数据

比如新闻网站实时热点、微博热搜等,需要频繁更新。总数据量比较大的时候直接从数据库查询会影响性能

四.Redis数据类型的应用场景

      1、String

字符串是最常用的数据类型,他能够存储任何类型的字符串,当然也包括二进制、JSON化的对象、甚至是base64编码之后 的图片。在Redis中一个字符串最大的容量为512MB,可以说是无所不能了。

2、Hash

常用作存储结构化数据、比如论坛系统中可以用来存储用户的Id、昵称、头像、积分等信息。如果需要修改其中的信息,只需要通过Key取出Value进行反序列化修改某一项的值,再序列化存储到Redis中,Hash结构存储,由于Hash结构会在单个Hash元素在不足一定数量时进行压缩存储,所以可以大量节约内存。这一点在String结构里是不存在的。

3、List

List的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis 内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。另外,可以利用 lrange 命令,做基于 Redis 的分页功能,性能极佳,用户体验好。

4、Set

set 对外提供的功能与 list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,这个时候就可以选择使用set。

5、Sort Set

可以按照某个条件的权重进行排序,比如可以通过点击数做出排行榜的数据应用。

 

 

你可能感兴趣的:(java)