Redis在Windows上的使用

Redis在Windows上的使用

  • 安装
  • Redis可视化工具
  • Redis的主从复制
  • 遇到的问题

安装

下载地址:https://github.com/MSOpenTech/redis/releases。

Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。

解压后文件:

redis-benchmark.exe 基准测试

redis-check-aof.exe aof

redischeck-dump.exe dump

redis-cli.exe 客户端

redis-server.exe 服务器

redis.windows.conf 配置文件

注意:《Redis-x64-3.2.100.msi》同样是redis服务端,可以代替redis-server.exe,安装后以服务形式启动,然后用自带客户端工具检测。

1、服务端:

打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:

Redis 安装

默认端口为6379,出现这个界面说明启动成功。

如果要以服务形式启动,则

redis-server --service-install redis.windows.conf --loglevel verbose --service-name 服务名称

卸载服务命令:redis-server.exe --service-uninstall

2、客户端:

用自带客户端redis-cli.exe检测。双击,连接成功。

运行 redis-cli.exe -h 127.0.0.1 -p 6379 。

设置键值对 set myKey abc

取出键值对 get myKey

Redis 安装

3、redis服务密码:

设置redis的密码:找到# requirepass foobared 改为 requirepass 我的密码 ,本机测试可不设置。

默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。

设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。

127.0.0.1:6379>auth xxx

Redis可视化工具

RedisDesktopManager一款好用的Redis桌面管理工具,支持命令控制台操作,以及常用,查询key,rename,delete等操作。

下载软件,请点击下面链接,进入下载页,选择对应版本:https://redisdesktop.com/download

操作使用如下图:

一、新建连接

输入redis主机host,端口号port,再起个生动形象,简明达意的别名。

二、该工具支持根据筛选条件查询key,add new key,reload等。

三、支持常用redis操作

针对目标key执行rename,delete,addrow,reload value操作。

四、命令控制台操作

该工具提供命令控制台:

Redis的主从复制

Redis跟MySQL一样,拥有非常强大的主从复制功能,而且还支持一个master可以拥有多个slave,而一个slave又可以拥有多个slave,从而形成强大的多级服务器集群架构。

redis的主从复制是异步进行的,它不会影响master的运行,所以不会降低redis的处理性能。主从架构中,可以考虑关闭Master的数据持久化功能,只让Slave进行持久化,这样可以提高主服务器的处理性能。同时Slave为只读模式,这样可以避免Slave缓存的数据被误修改。

1、配置

实际生产中,主从架构是在几个不同服务器上安装相应的Redis服务。为了测试方便,我这边的主从备份的配置,都是在我Windows 本机上测试。

在本机window下安装三个redis实例,其中主服务端口6379,从服务slave1为6380,从服务slave2为6381.

1.当前已安装并启动了主服务器,复制两份主服务的解压目录分别命名为Redis-salve1和Redis-salve2.如下图:

2.配置从服务器

分别配置两个配置文件(两个文件需要配置的内容相同,以redis.windows.conf为例):

改端口port为 6380和6381

在Slave 实例 ,# slaveof 修改为:slaveof 127.0.0.1 6379 配置。

3、分别启动主从服务 redis-server.exe redis.windows.conf

【这里只演示 一个从服务器6380】

注意,如果设置了密码的话,从服务器中需要在requirepass xxxx 后加一行: masterauth xxxx

masterauth 是主从认证密码,否则主从不能同步

4、安装为服务启动:

切换到各自目录下,输入命令:redis-server --service-install redis.windows.conf --loglevel verbose --service-name 服务名称

5、打开服务,启动两个从服务并设置为自动启动

2、测试

在主服务下,用server-cli输入设置值,

redis-cli.exe -h 127.0.0.1 -p 6379

在从服务下,获取。

redis-cli.exe -h 127.0.0.1 -p 6380

3、C#中调用

主从架构的Redis的读写其实和单台Redis 的读写差不多,只是部分配置和读取区分了主从。

需要注意的是:ServiceStack.Redis 中GetClient()方法,只能拿到Master redis中获取连接,而拿不到slave 的readonly连接。这样 slave起到了冗余备份的作用,读的功能没有发挥出来,如果并发请求太多的话,则Redis的性能会有影响。

所以,我们需要写入和读取的时候做一个区分,写入的时候,调用client.GetClient() 来获取writeHosts的Master的redis 链接。读取,则调用client.GetReadOnlyClient()来获取的readonlyHost的 Slave的redis链接。

或者可以直接使用client.GetCacheClient() 来获取一个连接,他会在写的时候调用GetClient获取连接,读的时候调用GetReadOnlyClient获取连接,这样可以做到读写分离,从而利用redis的主从复制功能。

遇到的问题

1、Redis 服务无法启动,错误 1067 进程意外终止

可以看下服务属性,如果是网络服务,修改为本地系统服务即可启动!

【有可能的情况是 其他应用安装了此服务导致,eg,docker】

修改为本地服务

2、System.TimeoutException: 'Redis Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use.

翻译:Redis超时已过期。 从池中获取连接之前已经过超时时间, 这可能是因为所有池化连接都在使用中。

可能的原因:连接没有及时释放。

eg:var r = pool.GetClient(); 改为

using (var r = pool.GetClient())

{

}

你可能感兴趣的:(笔记,redis,windows,数据库)