![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
Future_LL
Believe in the future.
展开
-
Redis 底层原理之SDS、Linked List
简单动态字符串SDS SDS 实现: Redis 没有直接使用 C 语言的字符串,而是构建了自己的抽象类型:简单动态字符串(Simple Dynamic String)。 struct sdshdr { // 记录buf数组中已使用字节的数量 // 等于SDS所保存字符串的长度 int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[];} ..原创 2020-07-22 09:29:19 · 248 阅读 · 0 评论 -
Redis — SDS API 详解
SDS 数据结构 typedef char *sds; struct sdshdr { // 记录buf数组中已使用字节的数量 // 等于SDS所保存字符串的长度 int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[];}; SDS API...转载 2020-04-18 15:59:26 · 415 阅读 · 0 评论 -
AOF和RDB总结
一、RDB点击这里:https://blog.csdn.net/Future_LL/article/details/86666983二、AOF点击这里:https://blog.csdn.net/Future_LL/article/details/86668978三、同时开启两种持久化方式在这种情况下,当redis重启的时候回优先加载AOF文件来恢复原始的数据,因为在...原创 2019-01-27 23:34:35 · 458 阅读 · 0 评论 -
Window系统Redis的简介、下载、运行以及验证
一、简介 定义: redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方...原创 2018-11-25 21:21:54 · 219 阅读 · 0 评论 -
Redis的事务、乐观锁和悲观锁
一、是什么可以一次执行多个命令,本质是一组命令的集合。 一个事务中的所有命令都会序列化,按照顺序地串行化执行而不会被其他命令插入,不许加塞二、能干嘛一个队列中,一次性、顺序性、排他性的执行一系列命令三、怎么玩Redis中开启事务的命令是:MULTI ,这个命令通常会回复一个OK【回复的是OK,但是这个事能不能办,什么时候办,办不办的成不知道】,用户将会一次性的打多个...原创 2019-01-28 15:52:30 · 837 阅读 · 0 评论 -
在分布式数据库中CAP原理【CAP+BASE】
一、传统的ACID分别是什么A(Atomicity)原子性 C(Consistency)一致性 I(Isolation)独立性 D(Durability)持久性 二、CAPC(Consistency)强一致性 A(Availability)可用性 P(Partition tolerance)分区容错性三、CAP的3进2 C:强一致性 A:高可用 P:...原创 2019-01-23 16:30:12 · 345 阅读 · 2 评论 -
Redis的发布订阅
一、是什么进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息 订阅 / 发布消息图 二、命令三、案例 一次性订阅多个消息 订阅多个消息【通配符】 ...原创 2019-01-28 19:31:23 · 107 阅读 · 0 评论 -
Redis的主从复制(Master / Slave)
一、是什么行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备份机的 master/alave 机制,Master以写为主,Slave以读为主二、能干嘛读写分离 容灾恢复三、怎么玩配从(库)不配主(库) 从库配置:slaveof 主库IP 主库端口 每次与master断开之后都需要重新连接,除非你配置redis.conf文件 Inf...原创 2019-01-28 23:26:47 · 293 阅读 · 0 评论 -
Java中的Redis事务
一次简单的事务执行 package cn.e3mall.common.RedisText;import redis.clients.jedis.Jedis;import redis.clients.jedis.Transaction;/** * @author Mr.Li * @version 1.0 * @Description: * @Modified By: *...原创 2019-01-29 14:11:43 · 980 阅读 · 0 评论 -
Java中Redis的主从复制
package cn.e3mall.common.RedisText;import redis.clients.jedis.Jedis;/** * @author Mr.Li * @version 1.0 * @Description: * @Modified By: * @date 2019/1/29 14:48 */public class TextMS { ...原创 2019-01-29 14:55:32 · 595 阅读 · 0 评论 -
Redis的底层实现
动态字符串SDSRedis 没有直接使用 C 语言的字符串,而是构建了自己的抽象类型简单动态字符串(simple dynamic string)。 在 Redis 中,对于所有键,都是字符串类型,其底层实现是 SDS,而键值对的值,其实最终都是以字符串为粒度的,底层都是 SDS 实现。(比如列表,其实列表中每一项都是字符串以 SDS 实现的)。 SDS 结构中,包含 char 类...原创 2019-03-13 09:43:15 · 4409 阅读 · 1 评论 -
Redis 大量数据插入
有些时候,Redis实例需要装载大量用户在短时间内产生的数据,数以百万计的keys需要被快速的创建。我们称之为大量数据插入(mass insertion),本文档的目标就是提供如下信息:Redis如何尽可能快的处理数据。使用Luke协议:使用正常模式的Redis 客户端执行大量数据插入不是一个好主意:因为一个个的插入会有大量的时间浪费在每一个命令往返时间上。使用管道(pipelini...原创 2019-04-26 09:33:18 · 3315 阅读 · 0 评论 -
Redis五种数据结构的底层实现
embstr编码的动态字符串:从Redis 3.0版本开始字符串引入了EMBSTR编码方式,长度小于OBJ_ENCODING_EMBSTR_SIZE_LIMIT(39)的字符串将以EMBSTR方式存储。 EMBSTR方式的意思是 embedded string ,字符串的空间将会和redisObject对象的空间一起分配,两者在同一个内存块中。 Redis中内存分配使用的是 jema...原创 2019-04-25 14:04:27 · 5931 阅读 · 0 评论 -
Redis持久化之AOF
一、是什么以日志的形式来记录每个写操作,将Redis执行过得所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis启动的话就根据日志文件的内容将写执行从前到后执行一次以完成数据的恢复工作二、AOF保存的是appendonly.aof文件演示以及配置: 修改配置文件关闭RDB,打开AOF: ...原创 2019-01-27 23:22:11 · 201 阅读 · 0 评论 -
Redis持久化之RDB
一、什么是RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何 IO 操作的,这就确保了极高的性能。 如果需要进行大规模数据的恢复,且对...原创 2019-01-27 19:49:11 · 317 阅读 · 0 评论 -
解析Redis配置文件【redis.conf】
一、他在哪二、Units单位文件开头 三、INCLUDES包含可以通过include包含,redis.conf可以作为总闸,包含其他配置文件 四、GENERAL通用Daemonize:默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把配置文件里daemonize改为yes。 当redis作为守护进程运行的时候,它会写一个...原创 2019-01-27 23:22:29 · 217 阅读 · 0 评论 -
Linux系统安装Redis
一、Redis安装前提 Redis是c语言开发的 安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++ 我这里安装了,所以输入命令yum install gcc-c++ 因为我这里下载过了,所以显示Nothing to do 二、安装步骤解压文件 编译文件,因为该文件中有Makef...原创 2018-11-25 23:06:08 · 323 阅读 · 0 评论 -
Linux下Redis的使用
一、安装Linux系统下Redis的安装:https://blog.csdn.net/Future_LL/article/details/84503429 我的博客详细记录了Redis的安装,这里就不详细介绍了。二、启动Redis服务 三、使用Redis,需要客户端连接服务端客户端连接到本机 客户端连接到远程 四、使用Redis是一个key-v...原创 2018-11-27 00:41:57 · 1035 阅读 · 0 评论 -
简单学习Redis的持久化方案
Redis的持久化方案: Redis的所有数据都是保存到内存中的。 持久化的两种形式: Rdb 【Redis DataBase】形式:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。 把内存中的数据保存到磁盘上,放到rbd快照文件里,如果重新启动,就会把rbd文件里边的数据全部取出来,恢复到内存中。注意:突然断电的情况有可能...原创 2018-11-27 23:08:44 · 163 阅读 · 0 评论 -
Redis的集群原理
一、redis-cluster架构图使用如下图的命令连接到别的Redis服务器,并通过命令ping检测Redis服务器是否处于健康状态 下图所示的圆圈表示一个Redis服务器,每个结点的数据都是不一样的,只要有一个结点挂了,那么那么Redis集群就挂了,考虑到高可用,每个节点都需要添加备份机 redis-cluster投票:容错 投票机制,用于指导那个结点挂了 ...原创 2018-11-27 23:54:53 · 188 阅读 · 0 评论 -
Redis集群的搭建
一、Redis集群的搭建 Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。 Redis集群至少需要6台服务器。 我只有一台电脑而且电脑也带不起来六台虚拟机,所以搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001~7006 我这里使用的Redis是3.0.0的tar.gz包:https:/...原创 2018-11-28 20:15:28 · 165 阅读 · 0 评论 -
Redis-Desktop-Manager的下载与使用
一、下载我这个是Window版本的,可以连接到本机,也可以连接到虚拟机 下载地址:https://pan.baidu.com/s/1tKVHDlt1aE-3uiPxXNqqWQ 下载好后,一直下一步即可。 如果是连接集群,那么需要创建如下的多个过程 二、测试连接Name:链接显示名(随意) Host:redis主机ip Port:redis主机端口号 Au...原创 2018-11-28 20:13:18 · 1470 阅读 · 0 评论 -
IDEA下测试Redis
一、首先需要在pom.xml中加入Java Redis的jar包 <!--Java Redis的jar包--><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>...原创 2018-11-28 20:47:29 · 2134 阅读 · 0 评论 -
Redis入门概述
一、是什么Redis:REmote DIctionary Server(远程字典服务器) Redis是免费的开源的,用C语言编写,遵守BSD协议,是一个高性能(key/value)分布式内存数据库,基于内存运行并支持持久化NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数结构服务器。 Redis与其他key-value缓存产品有一下特点: Redis 支持数据的持...原创 2019-01-24 11:58:53 · 136 阅读 · 0 评论 -
Redis的五大数据类型简介【以及获取常见数据类型操作命令】
一、String(字符串)二、Hash(哈希,类似Java中的Map)三、List(列表)四、Set(集合)五、Zset(sorted set:有序集合)六、获取Redis常见数据类型操作命令常见命令网址:http://redisdoc.com/ ...原创 2019-01-24 12:21:42 · 167 阅读 · 0 评论 -
Redis五大数据类型应用
Key显示所有键:keys * 创建一个键值对:set k1 v1 启动指定的key到另一个数据库:move k1 2 查看某个key是否存在:exists k1 通过key得到value:get k1 设置key的有效期:expire k1 100 【也表示重置过期时间】 查看key的剩余有效期:ttl k1 如果查看剩余有效期返回的是 -1 那么表示...原创 2019-01-25 18:32:43 · 176 阅读 · 0 评论 -
Redis内存回收策略
Redis内存回收策略Redis内存回收机制主要体现在以下两个方面: 删除到达时间的键对象。 内存使用达到maxmemory上限时触发内存溢出控制策略。 删除过期键对象Redis所有的键都可以设置过期属性,内部保存在过期字典中。由于进程内保存了大量的键,维护每个键精准的过期删除机制会导致消耗大量的CPU,对于单线程的Redis来说成本过高,因此Redis采用惰性删除和...转载 2019-05-27 13:58:09 · 227 阅读 · 0 评论