Redis工作原理与入门

Redis是一个高性能的key-value数据库,支持多种数据结构如string、list、set、zset和hash。它采用单线程的epoll+事件驱动模型,实现Reactor模式的文件事件处理器。Redis提供RDB和AOF两种持久化方式,确保数据安全性。此外,Redis还支持数据备份、原子操作和高读写速度。
摘要由CSDN通过智能技术生成

 Redis的工作原理

Redis 是一个高性能的key-value非关系型数据库。它支持存储的数据类型有string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。

Redis内部实现采用epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成事件。它的I/O多路复用是在单个线程中通过记录跟踪每一个sock(I/O流)的状态来管理多个I/O流。

Redis采用Reactor的方式来实现文件事件处理器(每一个网络连接都对应一个文件描述符)。在main函数初始化之后,就会进行事件驱动循环,在循环中会调用IO复用函数进行监听。

Redis-Client在操作的时候,会产生不同事件类型的socket,I/O多路复用程序将其置入队列之中,然后,IO事件分派器依次去队列中取,转发到不同的事件处理器中。

Redis提供了两种级别的持久化方式:

        1.RDB持久化方式能在指定的时间间隔对数据进行快照存储

        2.AOF持久化方式记录每次在服务器写的操作,当服务器重启时会重新执行这些命令来恢复原始的数据。AOF命令以redis协议追加保存每次写操作到文件末尾。Redis还能对AOF文件进行后台重写,避免AOF文件的体积过大。

 Redis的基础数据结构及使用

1.String 字符串

常用命令:SET key value 设置指定 key 的值

                  GET  key 获取指定 key 的值

                  GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)

                  APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

                  ...

2.list 列表

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

常用命令:LPUSH key value1[value2] 将一个或多个值插入到列表头部

                  LPOP  key 移出并获取列表的第一个元素

                  RPOP  key 移除列表的最后一个元素,返回值为移除的元素

                  RPUSH key value1[value2]  在列表中添加一个或多个值

                  ...

3.set 集合

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

集合对象的编码可以是 intset 或者 hashtable。

常用命令:SADD key member1[member2] 向集合添加一个或多个成员

                  SCARD  key 获取集合的成员数

                  SPOP  key 移除并返回集合中的一个随机元素

                  ...

4.hash 散列

适合用于存储对象

常用命令:HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。

                  HGET  key field 获取存储在哈希表中指定字段的值。

                  HDEL key field1[field2] 删除一个或多个哈希表字段

                  ...

5.zset 有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

常用命令:ZADD key score1 member1[score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

                  ZREM key member [member...] 移除有序集合中的一个或多个成员

                  ZCARD  key  获取有序集合的成员数

                  GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)

                  ...

 Redis的特点

1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;

2.Redis不仅支持key-value类型的数据,同时也提供String、list、set、zset、hash等数据结构的存储

3.Redis支持数据的备份,即master-slave模式的数据备份

4.性能极高,Redis能读的速度是110000次/s,写的速度是81000次/s 

5.原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值