Redis(https://redis.io/), 是一个内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
安装Redis
我很少在开发机中直接装各种数据库,我一般使用Docker,针对Redis也不例外,我还是使用Docker。
这是Redis在DockerHub里的地址:https://hub.docker.com/_/redis,里面有文档。
启动docker,下载redis镜像:docker pull redis
然后运行镜像并发布端口6379:
然后运行redis-cli(这是Redis的一个命令行管理工具):
进入redis-cli之后,我们可以设置一个key-value来试试:
当你输入的时候,它是有提示的。
通过get key(key为name),可以获得其对应的值。
准备.NET Core项目
建立一个.NET Core 控制台项目,并安装Redis的.NET Core客户端。
Redis有很多C#的客户端,这里有个列表:
我这使用的是 StackExchange.Redis (https://stackexchange.github.io/StackExchange.Redis/)。
安装StackExchange.Redis使用StackExchange.Redis
ConnectionMultiplexer已经实现了IDisposable接口,之所以没有使用using表达式,是因为该对象应该重复利用的,具体请看文档。
我之前通过redis-cli设置了key为name的值,这里我通过name这个key把相对应的值找出来,并打印在控制台:
如果所示,连接上了数据库,并把值输出到了控制台,OK。
使用C#写入值这个也没什么特别的,看代码:
运行结果:
Redis 的数据类型
Redis的主要数据类型有这些:
Key:就是key的意思。。。。
String:字符串
List:有序字符串的集合
Hashes:有点像对象,里面可以有若干个字段,字段都有自己的值,字段和值都是字符串类型的。
Set:无序唯一字符串的集合
Sorted-Set:跟Set很像,但是每一个字符串元素都对应一个浮点数值,该数值叫做分数。它里面的元素通常是按照分数来排序的。
Redis 如何持久化
一共有两种方式:
AOF(Append-only file)
RDB(Redis database file)
首先需要知道Redis的操作都是在内存中完成的,因为这样速度快。
AOF然后你可以启用AOF,它会把每个操作都记录到系统文件里。所以如果Redis服务器重启了,它会根据AOF这个文件来重建整个数据集。
这个文件会很快就变得很大,但是Redis很聪明,它会使用里面最新版本的数据,并压缩文件到可控大小。
RDBRDB是Redis的默认模式,它有点像数据库的快照,创建一些时间点的数据,如果发生灾难,你可以从这些数据里进行恢复。
当达到一些条件的时候,例如数据集里面在某段时间内新添加了一定条目的数据,Redis就会把数据做个快照,并写入一个RDB文件。
最佳实践是两者都用,使用AOF因为其速度和可用性,使用RDB做灾难恢复。
Redis的配置文件
https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf 这是Redis 4.0 的一个标准配置文件。
RDB 快照相关先看快照部分,也就是和RDB有关的部分: