Redis 安装与配置

背景

为了解决公司产品数据增长过快,初始化太耗费时间的问题,决定使用redis作为缓存服务器。

这是redis官网上原文,官方不支持windows,但是微软开放小组提供了一个windows版本的redis,仅支持64位版本。虽然可以根据需要从源代码构建32位版本。

Windows下的安装与配置

参考文章:http://www.runoob.com/redis/redis-install.html

下载

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

下载一个压缩包 Redis-x64-3.2.100.zip。

安装

然后解压到你的安装盘。比如我是解压到了F盘,所以需要先切换到F盘  

切换到安装盘

F:

进入到解压完的目录

cd Redis-x64-3.2.100-windows64

执行启动命令

redis-server.exe redis.windows.conf

这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

切换到redis目录下运行

redis-cli.exe -h 127.0.0.1 -p 6379

如果ip和端口都没变也可以直接运行 redis-cli.exe。这样就打开了redis客户端了,可以执行一些命令了。

使用

设置键值对 set wang bo

取出键值对 get wang

测试安装完成,还是比较简单的。

Linux下的安装与配置

下载

官网地址:https://redis.io/download

将在官网上下载的redis压缩包redis-3.2.5.tar.gz通过ftp直接上传到了linux的site目录下。

安装

然后我是通过xshell5工具操作的linux。

进入site目录下

进行解压缩并覆盖

解压完后site下会出现解压后的redis-3.2.5文件夹,进入到这个文件夹下

执行make命令,对解压后的文件进行编译

编译完之后redis-3.2.5文件夹下会出现src文件夹和 redis.conf 配置文件,src下面会有相应的命令。

启动

进入src目录,执行 redis-server,启动redis服务,下面是启动成功的截图

注意:这里直接执行 redis-server 启动的Redis服务,是在前台直接运行的(效果如上图)。

也就是说,执行完该命令后,如果Lunix关闭当前会话,则Redis服务也随即关闭(如下图所示,我点击了 Ctrl+C,Redis 服务就关闭了。 

redis服务已经关闭,这时候我运行 redis-cli 客户端会提示无法连接。

一般情况下,启动Redis服务需要从后台启动,并且指定启动配置文件。

配置

Redis的配置主要是通过修改 redis.conf 这个文件完成的,下面的操作都是在 redis.conf 里面进行。

更多配置可参考:Redis 配置内容总结

(1) 把前台启动修改为后台启动:

把daemonize no 改成 daemonize yes,表示后台启动,这个修改是为了防止启动 Redis 后直接 Ctrl+C 就会终止 Redis 运行。

现在重新启动redis服务并加载指定的配置文件,启动成功

(2) 修改本地访问为局域网访问:

如果想要把只允许本地访问改成允许远程访问(局域网内),将bind 127.0.0.1改为 bind 0.0.0.0,这样的话在项目里配置的redis地址直接写的就是redis所在linux服务器的IP。

如果改为内网IP,比如改为bind 192.168.0.2,这样内网项目访问的时候需要直接访问这里配置的IP。

(3) 修改本地访问为外部网络访问:

如果想要外部网络访问,注释掉bind 127.0.0.1,可以使所有的 ip 访问 redis,在 redis3.2 之后还需要把 protected-mode yes 改为 protected-mode no

(4) 设置密码:

# requirepass foobared,将这段代码注释去掉,设置密码,比如改成 requirepass mypassword

修改了密码和ip之后启动客户端就需要带上ip,端口和密码了:

命令

更多命令请参考这篇博客:Redis 客户端命令总结

启动redis服务

先进入到redis安装目录下的src目录  

cd xxxx/redis-4.0.1/src

启动redis服务并加载指定的配置文件

./redis-server ../redis.conf

连接redis客户端

这里设置了密码,没设置的话不需要带密码

./redis-cli -a mypassword

如果设置了ip地址的话,就需要带上ip,端口,密码

./redis-cli -h 192.168.0.1 -p 6379  -a mypassword

客户端操作命令

set key value   设置键值对

get key   获取value值

exists key   确认一个key是否存在

keys *   查看所有的key

del key   删除一个key

flushdb   删除当前选择数据库中的所有key

退出客户端

exit

关闭redis服务

ps -ef|grep 6379  查看redis端口6379的进程号

kill -9 xxxx  杀掉对应进程号

 

遇到的问题:

1、/bin/sh: cc: command not found

提示gcc和cc命令令未找到。解决方法:

yum -y install gcc gcc-c++ libstdc++-devel

2、jemalloc/jemalloc.h: No such file or directory

网上大部分解决办法都是错误的:

make MALLOC=libc

正确解决办法(针对2.2以上的版本)。清理上次编译残留文件,重新编译:

make distclean  && make

错误的本质是我们在开始执行 make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,我们再执行make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。

网上的解决办法虽然最后也是可以成功安装好 redis,但是是有一些隐患的,首先我们要知道 redis 需要使用内存分配器的, make MALLOC=jemalloc 就是指定内存分配器为 jemalloc ,make MALLOC=libc 就是指定内存分配器为 libc ,这个是有安全隐患的,jemalloc 内存分配器在实践中处理内存碎片是要比 libc 好的,而且在README.md 文档也说明到了,jemalloc内存分配器也是包含在源码包里面的,可以在 deps 目录下看到 jemalloc 目录。

 
posted @ 2016-12-01 19:58  一线大码  Views(283)  Comments(0Edit  收藏  举报