.net 连接Redis

Redis安装

公司业务需要,弄了个类似于消息队列的东西,由客户端一直轮询取得信息。之前一直是走表的,但是效率以对表的使用都太过频繁,想试着用一下Redis,看看效率怎么样。

首先是安装Redis,这个是从github上面下载下来的,最新的3.x的版本,放到服务器上面,然后安装。

安装期间应该(忘记了)会出现让选择是否以服务的形式安装,如果出现这样的选择,就选是。

然后在系统服务里面就可以找到这个服务了,应该默认是已经开启了。

打开cmd(如果之前打开,请关掉重新开,因为之前path变量 没有加载进来)。输入redis_cli,就ok了,会自动连接到服务器自己的Redis数据库中。可以试一下

>set name ensleep

然后再

>get name

“ensleep”

这就说明已经运行正常。

Redis设置

Redis的设置非常简单,对比IIS而言,如下:

持久化

Redis的持久化是通过文件来的,一种是AOF,另一种是RDB。

好多教程里面都说持久化设置在redis.config里面,但是,windows下的配置文件却是redis.windows-service.conf,打开这个文件,作如下配置修改

AOF

这种方式是备份模式,每条指令都会被转存一份(linux下通过fork(),windows下通过内存分布映射)到文件中,而且每次都是追加的,这使得备份的数据时刻最新,但是,也因为是一直追加,文件会越来越大,而且当执行一次恢复之后,可能会产生上一次的指令未被备份的情况。配置的操作如下:

appendonly yes       #启用AOF持久化方式
appendfilename appendonly.aof #AOF文件的名称,默认为appendonly.aof
# appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。
# appendfsync no     #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。

上面的配置来自网络,

第一条是说明启动AOF的方式;第二条设置的是文件名,这个文件会变得很大;第三到五条则是写入的触发点,因为是消息队列,我选的是everysec,怎么说呢,因为我觉得如果每次都写到文件里面,是不是有点太过分了,而且如果系统出错,前一秒内的数据丢失其实也是很正常的,哪怕你是开了always,你敢说你在写io时候不断电?

AOF还有一种原因就是我上面讲的,会出现文件越来越大的情况,这种情况我们也可以通过一个设置来改变。

本方法的目的是在将AOF文件重新整理,使其变得小一些。去掉那个无效的指令。

no-appendfsync-on-rewrite yes   #在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。
auto-aof-rewrite-percentage 100 #当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。
auto-aof-rewrite-min-size 64mb  #当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。

先把第一条打开,即使用异步的重写,然后设置第二条在超出原来百分多少后重写日志,第三条是只有在满足那样的大小的情况下,才执行重写操作,与第二条是逻辑与的条件关系。

RDM

这种方式类似于定时备份,就是按设定的周期将数据的内存页转为rdb文件,存下来。由于是整个内存文件,所以比较完整,但是不能保证是最新的。配置的操作如下:

save 900 1    #当有一条Keys数据被改变时,900秒刷新到Disk一次
save 300 10   #当有10条Keys数据被改变时,300秒刷新到Disk一次
save 60 10000 #当有10000条Keys数据被改变时,60秒刷新到Disk一次

网上的建议是两种方式都使用,而系统在重启的时候使用加载优先加载rdm,然后再核对AOF。我也是如此,将两者开打开了。

下面就是开启Redis服务,高枕无忧,开始使用了。因为这已经不是关系数据库了,那些个条件查询之类的,不能再奢望了。

posted @ 2015-10-30 14:54  ensleep  阅读(2726)  评论(0编辑  收藏  举报