数据库Redis在Windows上的使用教程

Redis学习笔记----Redis在windows上的安装配置和使用

Redis简介

  redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis一般部署在linux服务器上,但是我们也可以在windows上学习他的安装和配置。

Redis性能

下面是官方的bench-mark数据:

测试完成了50个并发执行100000个请求。

设置和获取的值是一个256字节字符串。

Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。

文本执行使用loopback接口(127.0.0.1)。

结果:读的速度是110000次/s,写的速度是81000次/s 。


Redis在windows上的安装和配置


首先下载Redis完整包。

Redis完整包下载

解压下载后的完整包,打开MasterRedis文件夹(此文件夹为主Redis数据库文件夹,后面会介绍)。

redis.conf文件为Redis服务的配置文件,可以根据需要进行配置。


下面是redis.conf的主要配置参数的意义:

daemonize:是否以后台daemon方式运行


pidfile:pid文件位置


port:监听的端口号


timeout:请求超时时间


loglevel:log信息级别


logfile:log文件位置


databases:开启数据库的数量


save * *:保存快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。


rdbcompression:是否使用压缩


dbfilename:数据快照文件名(只是文件名,不包括目录)


dir:数据快照的保存目录(这个是目录)


appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。


appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

下面给出配置文件的详细说明:


 点击展开说明

打开Redis服务


打开命令行进入MasterRedis文件夹目录。比如我下载的文件夹路径为E:\Redis\RedisFull,就在命令行输入:


接着输入:

此时会看到进程里多了一个

说明Redis服务开启成功。

Redis主从服务简介


Redis主从服务原理:

  在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。

Redis主从服务注意事项:    

1). 同一个Master可以同步多个Slaves。

2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。

3). Master Server是以非阻塞的方式为Slaves提供服务,所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。

4). Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。

5). 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。

6). Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。


Redis主从服务配置


打开SlaveRedis文件夹,修改redis.conf文件的port项,修改值任意,但是不能和主服务的port相同(下载的完整包中我已经修改过),bind项改为主服务器的IP(本地测试改为127.0.0.1),slaveof项改为127.0.0.1 6379(已改)。

打开命令行输入命令:


会发现进程中有2个redis-server.exe进程。

Redis主从同步C#代码测试


首先下载Redis的C#组件,用于操作Redis数据库。

Redis4C#包下载

新建一个控制台项目。

添加Redis4C#包内3个程序集的引用。

添加测试代码。


1varclient =newRedisClient("127.0.0.1",6379); 2client.Set("6379_1","test"); 3client.Set("6379_2","test"); 4 5stringname = client.Get("6379"); 6            Console.WriteLine(name); 7 8//Redis队列 9client.EnqueueItemOnList("jayjay","12345");10client.EnqueueItemOnList("jayjay","12345");111213intlength1 = client.GetListCount("jayjay");14for(inti =0; i < length1; i++)15            {16Console.WriteLine(client.DequeueItemFromList("jayjay"));17            }181920//Redis压栈出栈21client.PushItemToList("name","jayjay6379");22client.PushItemToList("name","jayjay6379");2324intlength2 = client.GetListCount("name");25for(inti =0; i < length2; i++)26            {27Console.WriteLine(client.PopItemFromList("name"));28            }2930Console.ReadKey();


运行代码。

将主服务端口6379改为从服务端口6381,读出刚刚放入的数据,例如:

1varclient =newRedisClient("127.0.0.1",6381);2stringname = client.Get("6379_1");3Console.WriteLine(name);

能读到说明主服务保存的数据已经同步到从服务中。

PS:1.Redis文件夹路径中不能出现中文(命令行采用的是ANSIC编码,中文会出错)!


2.dump.rdb是数据快照文件,主服务的数据快照并不会立即同步到从服务的数据快照中!

本文是我在学习Redis时的一些积累,目的是和各种园友分享经验,如果有什么错误或者不完善的地方欢迎大家指出!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353