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一样高效。