
Redis
文章平均质量分 52
Redis基础知识包括五大基础类型 两种特殊类型 redis哨兵模式 redis订阅 主从复制 如何解决缓存和雪崩问题
念奴娇6
要什么头发啊
展开
-
十五:Redis--缓存穿透和雪崩和击穿
Redis缓存的使用极大提高了应用程序的性能和效率,特别是数据查询的方面,但同时也带来了问题,其中最严重的就是数据一致性的问题,还有就是缓存穿和缓存雪崩。缓存穿透当用户想要查询一条Redis内存数据库不存在的数据时,也就是缓存没有命中,于是向持久层数据库中去发起查询,发现没有,于是本次查询失败。但是当用户很多时,都没有命中,于是都去请求了持久层的数据库,这会给持久层的数据库带来了很大的压力,这就相当于出现了缓存雪崩(秒杀)。解决方案1.布隆过滤器布隆过滤器是一种数据结构,对所有可能查询到的数原创 2021-09-30 17:17:33 · 297 阅读 · 1 评论 -
十四:Redis--主从复制、哨兵模式
概念:主从复制是将一台Redis的服务器数据,复制到其他的Redis服务器,前者称为主节点(master/leader),后者称为从节点(slave/flower),数据的复制是单向的,只能从主节点复制到从节点,master以写为主,slave以读为主。默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点,但一个从节点只能有一个主节点。主从复制的作用主要包括:数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式故障恢复:当主节点出现问题后,从节点可以代替原创 2021-09-30 15:19:02 · 135 阅读 · 0 评论 -
十三:Redis--Redis订阅发布
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。微信 微博 关注系统。Redis可以订阅任意数量的频道。订阅、发布消息图:原创 2021-09-29 14:31:18 · 153 阅读 · 0 评论 -
十二:Redis持久化------RDB和AOF
RDB持久化快照保存过程过程:在指定时间间隔内将内存中的数据集快照写入磁盘,也就是snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化结束后,再用这个临时文件替换掉上次持久化好的文件。整个过程中,主进程不进行任何IO操作,这样就确保了极高的性能,如果需要进行大规模的数据恢复,且对于数据恢复程度可以有容错,则RDB方式要比AOF的效率要高,RDB的缺点就是最后一次持久化的数据可能无法恢复,我们默认的原创 2021-09-28 17:07:27 · 169 阅读 · 0 评论 -
十一:Redis配置文件详解以及持久化操作
一 分析Redis.conf配置文件Redis配置文件如下原创 2021-09-27 17:13:42 · 103 阅读 · 0 评论 -
九:Redis-事务的基本操作
Redis事务的本质:一组命令的集合,一个事务的所有命令都会被序列化,在事务的执行过程中,会按照顺序执行。一次性、顺序性、排他性、执行一些命令Redis事务中没有隔离级别的概念所有的命令并没有直接执行,而是在发起执行命令的时候(exec)才会被执行Redis单条命令会保证原子性,但是Redis事务不会保证原子性Redi事务:开启事务(multi)命令入队()执行事务(exec)1.正常事务执行127.0.0.1:6379> multi #开启事务OK127.0.0.1:原创 2021-09-19 16:13:13 · 124 阅读 · 0 评论 -
十:Redis-Springboot集成Redis以及自定义Redis序列化以及Redis工具模板
Springboot整合SpringBoot操作数据库:Springdata jpa jdbc mogodb redis说明:SpringBoot2.x之后Jredis被替换成了lettcureJredis采用的 是直连的方式,多个线程操作的话,是不安全的,如果想要避免这种情况,就要采用Jredis pool连接池,更像Bio模式lettcure:采用netty,实例可以再多个线程之间共享,不存在线程不安全的情况,可以减少线程数据了,更像Nio模式一:导入redis的相关依赖<!--原创 2021-09-19 16:03:12 · 231 阅读 · 0 评论 -
八:Redis-Hyperlog基数统计详解和Bitmap位图场景详解
Hyperlog基数A{1 2 3 4 5}B{4 5 6 7 8}基数:8(统计去除重复元素的个数)优点占用内存是固定的,只需要占用12kb的内存!但是有0.81%的错误率,用于统计网页访问人数是可以接受度的。基数统计127.0.0.1:6379> pfadd key1 1 2 3 4 5 #向key1中添加值(integer) 1127.0.0.1:6379> pfcount key1 #统计key1值的个数(integer) 5127.0.0.1:6原创 2021-09-16 11:24:16 · 1330 阅读 · 0 评论 -
七:Redis-Geospatial地理位置详解
添加城市的经纬度规则:两级无法直接添加,我们一般会下载城市数据,直接通过程序一次性导入有效的经度从-180度到+180度有效的纬度从-85到+85当输入的坐标超过上述指定范围后,会返回一个错误127.0.0.1:6379> geoadd china:city 116.40 39.30 beijing #添加北京城市经纬度(integer) 1127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai#添加上海城市经纬度(..原创 2021-09-15 16:49:07 · 514 阅读 · 0 评论 -
六:Redis-Zset有序集合详解
设置一个值或多个值127.0.0.1:6379> zadd zset 1 one #设置单个值(integer) 1127.0.0.1:6379> zrange zset 0 -1 #查看有序集合1) "one"127.0.0.1:6379> zadd zset 2 two 3 three 4 four #设置多个值(integer) 3127.0.0.1:6379> zrange zset 0 -1 #查看有序集合1) "one"2) "two"3) "..原创 2021-09-15 15:12:01 · 138 阅读 · 0 评论 -
五:Redis-Hash类型详解
相当于Map集合,key-map,这时候的值是一个map集合,本质和String没有区别,是一个key-value设置值127.0.0.1:6379> hset user1 name wangchangjun #设置user1 name(integer) 1127.0.0.1:6379> hget user1 name#获取user1 name"wangchangjun"127.0.0.1:6379> hmset user1 age 23 hobby swim loca原创 2021-09-15 13:26:26 · 230 阅读 · 0 评论 -
四:Redis-Set类型集合详解
向set中插入值,查询所有的值,查询某个值是否存在127.0.0.1:6379> sadd set k1 k2 k3 k4 k5 #向set插入值(integer) 5127.0.0.1:6379> sadd set k5 #不可插入重复的㢝(integer) 0127.0.0.1:6379> smembers set #查询所有的值,随机存储,1) "k4"2) "k2"3) "k3"4) "k1"5) "k5"127.0.0.1:6379> sis..原创 2021-09-14 17:22:20 · 112 阅读 · 0 评论 -
三:Redis-List列表类型详解
所有的list命令都是以l开头push值(插入)可以push重复的值127.0.0.1:6379> lpush list one #向key头部插入列表(integer) 1127.0.0.1:6379> lpush list two(integer) 2127.0.0.1:6379> lpush list three(integer) 3127.0.0.1:6379> lrange list 0 1 #查看指定范围内的值(类似栈,先进后出)1) "thr原创 2021-09-14 15:32:30 · 103 阅读 · 0 评论 -
二:Redis:String字符串类型详解
追加字符串 ,查看字符串长度127.0.0.1:6379> set k1 v1 #设置值OK127.0.0.1:6379> get k1 #获得值"v1"127.0.0.1:6379> keys *1) "k1"127.0.0.1:6379> append k1 hello #向某个字符串后面追加字符串,返回追加后的长度(integer) 7127.0.0.1:6379> get k1"v1hello"127.0.0.1:6379> strl..原创 2021-09-14 10:57:02 · 104 阅读 · 0 评论 -
一:Redis-单机到集群的架构演进,Nosql的作用、Redis的基本命令
架构演进第一阶段:单机Mysql年代第一阶段由于网站的访问量不大,所以单个数据库足以应付。第二阶段;Memcashed+Mysql+垂直拆分第二阶段的网站访问量增大,可以使用缓存来减轻网站压力,可以设置多个数据库,一些数据库用于修改内容并将内容同步到其他用于读的数据库中 ,在进行读数据的操作时,不涉及写的数据库。...原创 2021-09-13 18:06:54 · 158 阅读 · 0 评论