![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 77
_chenyl
努力从现在开始
展开
-
Redis数据结构-简单动态字符串SDS(simple dynamic string)
Redis系列文章目录1. 使用场景2. 为何使用SDS代替C字符串2.1 C字符串缺点2.2 更加完善的SDS2.2.1 定义2.2.2 SDS针对C字符串的升级1. 使用场景如果是不需要修改的字符串常量,使用C原生字符串,如:打印日志如果需要修改就使用SDS2. 为何使用SDS代替C字符串2.1 C字符串缺点不记录自身长度,每次获取都要计算,直到遇到代表字符串结尾的空字符串为止,时间复杂度为O(n)由于不记录自身长度,在字符串拼接时如果不提前分配内存就会造成溢出频繁的对字符串进行原创 2021-12-06 11:06:30 · 1116 阅读 · 0 评论 -
Redis中对象
Redis系列文章目录1. 概念2. 类型3. 对象的底层编码3.1 字符串4. 类型检查和命令多态4.1 类型检查的实现4.2 多态命令实现1. 概念Redis使用对象表示数据库键和值,每创建一个键值对,至少创建了两个对象,键对象和值对象。每个对象用redisObject表示,该结构中有三个和保存数据有关的属性type、encoding、ptrtypedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4原创 2021-11-08 17:35:06 · 661 阅读 · 0 评论 -
Redis系列
Redis数据持久化Redis集群模式Redis实现分布式锁原创 2021-11-08 15:26:35 · 119 阅读 · 0 评论 -
Redis数据持久化
Redis数据持久化分为RDB和AOF两种方式1. RDB通过保存键值对,是一种压缩后保存在硬盘上的二进制文件,在启动时只要存在rdb文件就加载数据。备份有两种执行方式:手动执行,根据配置定时执行1.1 手动执行通过命令SAVE,整个过程阻塞Redis进程1.2 定期执行通过命令BGSAVE,派生一个子进程执行保存工作,伪代码如下:def SAVE(): #保存rdb文件 rdbSave() def BGSAVE(): #创建子进程 pid = fock() if pid == 0原创 2021-11-05 18:58:11 · 296 阅读 · 0 评论 -
Redis实现分布式锁
1. 基于setnx命令实现加锁:setnx(lock_key,val),根据返回结果若值设置成功,则key不存在,加锁成功,反之key已经存在,加锁失败。解锁:del(lock_key)死锁问题:线程1获取锁成功,在未执行完任务时挂掉,没有显示的释放锁,那么其它线程就永远无法获取改锁造成死锁。所以需要设置过期时间,可以利用expire命令,但是setnx和expire命令是两个动作无法保证加锁操作原子性。还有个问题,假设线程1设置锁成功,但是任务没有执行完时锁已经超时,此时线程2抢占了锁,然后线原创 2021-11-05 11:25:28 · 253 阅读 · 0 评论 -
Redis集群模式
1. 主从模式最简单的一种集群方式,集群中分为master数据库和slave数据库,master可以提供读写服务,slave只能提供读服务,所以一单master关掉之后,集群就变成了了只读服务了2. 哨兵(sentinel)模式由于主从模式存在一大弊端,主节点挂掉之后无法对外提供写服务,哨兵模式出现了。哨兵模式由哨兵集群和redis集群组成,特点是:哨兵集群只负责监控redis集群,不提供读写服务当master挂掉时,sentinel会选举一个新的master,此时服务会停顿客户端只需要连接原创 2021-11-04 17:28:38 · 388 阅读 · 0 评论 -
MongoDB、Hbase、Redis等NoSQL优劣势、应用场景 NoSQL的四大种类
NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务,这时NoSQL凭借易扩展、大数据量和高性能以及灵活的数据模型成功的在数据库领域站稳了脚跟。目前大家基本认同将NoSQL数据库分为四大类:键值存储数据库,文档型数据库,列存储数据库和图形数据库,其中每一种类...转载 2018-10-26 17:00:39 · 555 阅读 · 0 评论 -
springboot使用redis管理session
添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> ...原创 2019-03-28 07:41:26 · 565 阅读 · 0 评论 -
Redis的持久化方式RDB和AOF
一、 RDB是什么:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,父进程是不用进行任何IO操作的,使Redis最大性能化。 持久化配置:save <...原创 2018-08-03 16:11:53 · 1371 阅读 · 0 评论 -
Redis入门知识
遇到问题一定要学会第一时间查看redis配置文件。Redis是单进程:用单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率。(epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况...原创 2018-07-27 15:59:07 · 106 阅读 · 0 评论 -
Redis常用配置说明
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了...原创 2018-07-30 17:46:02 · 148 阅读 · 0 评论