Redis介绍及相关扩展链接 2、Spring整合redis哨兵及redisTemplate

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/scropio0zry/article/details/80199775

Rides相关文章网址(用于记录一些好的文章地址~)

1、Redis——windows环境安装Redis和Redis sentinel部署教程

https://blog.csdn.net/u010648555/article/details/69944668


2、Spring整合redis哨兵及redisTemplate

https://blog.csdn.net/plei_yue/article/details/78857560


3、分布式缓存Redis之Pipeline(管道)

https://blog.csdn.net/u011489043/article/details/78769428

https://www.cnblogs.com/Leo_wl/p/6558606.html


4、redis整合spring(redisTemplate工具类)


介绍

    Redis是典型的NoSQL数据库服务器,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

    Redis本质上是一个Key-Value类型的内存数据库,Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。此外,因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作。

    Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB。

    Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

为什么使用?

1、解决应用服务器的cpu和内存压力

2、减少io的读操作,减轻io的压力

3、关系型数据库的扩展性不强,难以改变表结构

 

优点:

1、 nosql数据库没有关联关系,数据结构简单,拓展表比较容易

2、 nosql读取速度快,对较大数据处理快

Redis适合的场景

适用场景:

1、数据高并发的读写

2、海量数据的读写

3、对扩展性要求高的数据

不适场景:

1、需要事务支持(非关系型数据库)

2、基于sql结构化查询储存,关系复杂

 

业务场景:

1、会话缓存(Session Cache)用Redis缓存会话比其他存储的优势在于提供持久化

2、全页缓存(FPC)

3、队列 Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。

4、排行榜/计数器 Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。

5、发布/订阅

 

Redis的数据结构(五种)

1.安全二进制氏String类型:将String类型作为元素值;

    字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。Redis中字符串类型的Value最多可以容纳的数据长度是512M(把数据库中的表转化到redis其实就是利用string的特性,对“:”特殊的含义,利用这个特性就可以把数据库的表转化成redis存储)

2.Lists类型:根据插入顺序的String类型为元素的集合,基于Linked List实现,非Array型;

    在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。(2^32-1

    从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。

3.Sets类型:无重复且无序的String类型为元素的集合;

在Redis中,我们可以将Set类型看作为没有排序的字符串集合。Set可包含的最大元素数量是4294967295。(2^32-1

    Set类型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计算操作,如unions、intersections和differences。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。

4.Hashes类型:映射域到值类型的数据结构,其中域和值都是String类型;

    Redis中的Hashes类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如用户信息:Username、Password和Age等。每一个Hash可以存储4294967295个键值对。(2^32-1

5.Sorted Set类型:无重复且有序的String类型为元素的集合;

    Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。

    在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。

 

Redis的持久化

Redis将内存存储和持久化存储相结合,即可提供数据访问的高效性,又可保证数据存储的安全性

Redis持久化分类:

    1). RDB持久化

    该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb  

    2). AOF(append onlyfile)持久化

该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

    3). 同时应用AOF和RDB。

    4). 无持久化:

    可通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了

   

RDB机制的优势和劣势:

RDB存在哪些优势呢?

    1). 数据的备份和恢复非常方便,因为一个数据库只有一个持久化文件

    2). 性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。

    3). 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

   

RDB又存在哪些劣势呢?

    1).系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

    2). 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

   

AOF机制的优势和劣势:

AOF的优势有哪些呢?

1). 该机制可以带来更高的数据安全性,即数据持久性。Redis中提供了3种同步策略,即每秒同步、每修改同步和不同步。

2).对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。

3). 如果日志过大,Redis可以自动启用rewrite机制迅速“瘦身”(也可手动触发aof的rewrite操作,命令: bgrewriteaof)

4). AOF日志格式清晰、易于理解,很容易用AOF日志文件完成数据的重建。

   

AOF的劣势有哪些呢?

1). 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。

2). 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

   

 

猜你喜欢

转载自blog.csdn.net/scropio0zry/article/details/80199775