原:https://www.cnblogs.com/caokai520/p/4409712.html
C# Redis
概念
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。
Redis 与 Memcached 区别
- Memcached是多线程,而Redis使用单线程。(个人认为Memcached在读写处理速度上由于Redis)
- Memcached使用预分配的内存池的方式,Redis使用现场申请内存的方式来存储数据,并且可以配置虚拟内存。
- Redis可以实现持久化(也就是说redis需要经常将内存中的数据同步到硬盘中来保证持久化),主从复制,实现故障恢复。
- Memcached只是简单的key与value,但是Redis支持数据类型比较多。包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
Redis支持两种持久化方式:
(1):snapshotting(快照)也是默认方式.(把数据做一个备份,将数据存储到文件)
(2)Append-only file(缩写aof)的方式
快照是默认的持久化方式,这种方式是将内存中数据以快照的方式写到二进制文件中,默认的文件名称为dump.rdb.可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个key键修改就自动做快照.
aof方式:由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。aof比快照方式有更好的持久化性,是由于在使用aof时,redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
Windows安装Redis
以cmd安装方法:
1.下载安装包:https://github.com/dmajkic/redis/downloads
2.安装包下载后根据操作系统选择对应版本文件,里面会有几个dll分别为:
redis-server.exe:服务程序
redis-check-dump.exe:本地数据库检查
redis-check-aof.exe:更新日志检查
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询.
redis-cli.exe: 服务端开启后,我们的客户端就可以输入各种命令测试了
首先以管理员身份打开cmd (窗口+R),进入到安装包下载的位置。输入:redis-server.exe redis.conf 开启Redis服务。提示信息没有报错表示启动成功。
此窗口要保持开启状态,如果关闭Redis服务也会相即被关闭。使用客户端测试一下数据。
现在来观察Redis是怎么持久化存储数据到硬盘上。(快照是默认的持久化方式,默认的文件名称为dump.rdb)
可以看到Redis服务端在一段时间后将数据库保存在磁盘上,文件为:dump.rdb。
以weindows服务安装Redis方法:
下载Redis服务安装包:https://github.com/rgl/redis/downloads
下载完成后直接点击.exe下一步下一步OK。安装完后我们会在windows服务中找到Redis Service服务。注意启动服务后在进行相关测试。
代码实例
在调用Redis服务前需要准备三个DLL。下载地址:【Redis调用驱动】在项目中引用即可。
使用Redis中存储常用的5种数据类型:String,Hash,List,SetSorted set编写实例代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
输出结果:
总结
Redis的存储容灾性比较完善,所支持的存储数据类型比较全。比较坑的是版本2.X之下都不支持服务器集群,只能单机。在Redis 3.0中服务器集群功能才亮相。 操作起来总体感觉比较简单容易上手。