Redis从2.6版本开始引入对Lua脚本的支持, 通过在服务器中迁入Lua环境, Redis客户端可以使用Lua脚本, 直接在服务器端原子地执行多个Redis命令。 创建并修改Lua环境 为了在Redis服务器中执行Lua脚本, Redis在服务器内嵌了一个Lua环境, 并对这个Lua环境进行了一些列修改, 从而确保这个Lua环境可以满足Redis服务器的需要. Redis服务器创建并修改Lua环境的整个过程由一下步骤组成: 创建一个基础的Lua环境, 之后的所有修改都是针对这个环境进行的。 载入多个函数库到Lu…

9 4 月, 2021 0条评论 180点热度 0人点赞 专注着 阅读全文

排序 Redis的sort命令可以对列表键, 集合键或者有序结合的键进行排序. 以下代码展示了SORT命令对列表键进行排序的例子: redis> RPUSH numbers 5 3 1 4 2 redis> LRANGE numbers 0 -1 redis> SORT numbers redis> SADD alphabet a b c d e f g redis> SMEMBERS alphabet redis> SORT alphabet ALPHA   接下来使…

9 4 月, 2021 0条评论 193点热度 1人点赞 专注着 阅读全文

事务 Redis通过MULTI,EXEC,WATCH等命令来实现事务功能. 事务提供了一种将多个命令请求打包, 然后一次性,按顺序地执行多个命令的机制. 并且在事务执行期间, 服务器不会中断事务而改去执行其他客户端的命令请求, 它会将事务中的所有命令都执行完毕, 然后才去处理其他客户端的请求命令. 事务的实现 一个事务从开始到结束通常会经历一下三个阶段: 事务开始 命令入队 事务执行 事务开始 MULTI 命令的执行标志着事务的开始: redis> MULTI   MULTI命令可以将执行该命令的客…

8 4 月, 2021 0条评论 177点热度 0人点赞 专注着 阅读全文

哨兵模式 负责监控主从中所有的redis服务器的状态 当主redis发生了系统宕机之后, 并从当前主redis的从服务器中选出一个master用于主服务器. 并将其他从服务器连接到新的master之上 负责监听已经宕机的master服务器, 并监听master上线情况, 当master上线之后, 重新将master设置为新主服务器的从服务器。 启动并初始化Sentinel 启动一个Sentinel可以使用命令: redis-sentinel /path/to/your/sentinel.conf ​ 或者使用: r…

7 4 月, 2021 0条评论 169点热度 0人点赞 专注着 阅读全文

Redis集群是Redis提供的分布式数据库方案, 集群通过分片(sharding)来进行数据共享, 并提供复制和故障转移功能。 节点 一个集群通常由多个节点组成, 在刚开始的时候, 每个节点都是相互独立的, 他们都处于一个只包含自己的集群当中, 要组建一个真正可工作的集群, 我们必须各个独立的节点链接起来, 构成一个包含多个节点的集群。 链接各个节点的工作可以使用CLUSTER MEET命令来完成, 该命令格式如下: CLUSTER MEET <ip> <port> 向一个节点node发送…

6 4 月, 2021 0条评论 164点热度 0人点赞 专注着 阅读全文

在Redis中, 用户可以通过执行SLAVEOF命令或者设置slaveof选项, 让一个服务器去复制另一个服务器 被赋值的服务器叫做主服务器 对主服务器进行赋值的服务器则被称为从服务器 进行负值中的主从服务器双方的数据库将保存相同的数据, 概念上将这种现象称作"数据库状态一致", 或者简称"一致" 旧版复制功能的实现 旧版功能主要是指Redis 2.8以前版本, 在复制的时候会出现一些低效的情况 Redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作: 同步操作用于将从服务…

5 4 月, 2021 0条评论 225点热度 0人点赞 专注着 阅读全文

redis数据库组成 redis在启动时会启动16个数据库实例 redis客户端链接时, 默认链接的是0数据库 可以通过select index的方式切换数据库 数据存储方式 redis是键值对方式存储数据, 键是字符串对象; 值时具体对象,包括字符串对象, 列表对象, 集合对象, 哈希对象, 有序集合对象 redis在每个数据库中存储数据是采用的是dict(字典)数据结构进行存储 key : 字符串对象redisObject value: 存储的是redisObject对象 读写键控件时的维护操作 在读取一个键(…

4 4 月, 2021 0条评论 216点热度 0人点赞 专注着 阅读全文

Redis服务器是一个事件驱动程序, 服务器需要处理以下两类事件: 文件事件: Redis服务器通过套接字与客户端进行连接, 而文件事件就是服务器对套接字操作的抽象.服务器和客户端的通信会产生响应的文件事件, 而服务器通过监听并处理这些事件来完成一系列网络通信操作。 时间事件: redis服务器中的一些操作需要在给定的时间点执行, 而时间事件就是服务器对这类定时操作的抽象。 文件事件 Redis基于Reactor模式开发了自己的网络事件处理器, 这个处理器被称为文件事件处理器. 文件实践处理器使用I/0多路复用程序…

3 4 月, 2021 0条评论 144点热度 0人点赞 专注着 阅读全文

通过使用由I/O多路复用技术实现的文件事件处理器, Redis服务器使用单线程单进程的方式来处理命令请求, 并与多个客户端进行网络通信。 对于每个与服务器进行连接的客户端, 服务器都为这些客户端建立了响应的redisClient结构. 这个结构保存了客户端当前的状态信息, 以及执行相关功能时需要用到的数据结构 客户端的套接字描述符 客户端的名字 客户端的标志值(flag) 指向客户端正在使用的数据库的指针, 以及该数据库的号码 客户端当前要执行的命令, 命令的参数, 命令参数的个数, 以及指向该命令实现函数的指针 …

3 4 月, 2021 0条评论 180点热度 0人点赞 专注着 阅读全文

在redis中, 对象系统中构建一个引用计数实现的内存回收机制, 通过这一机制, 程序可以通过跟踪对象的引用计数信息, 在适当的时候自动释放对象并进行内存回收.

2 4 月, 2021 0条评论 161点热度 0人点赞 专注着 阅读全文