由于工作的缘故,开发的同事需要在CentOS 7使用Redis来做缓存。
一、Redis的基本介绍:
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
二、Redis的安装:
#/bin/bash
yum install gcc tcl jemalloc-devel -y
cd /tmp
wget
tar zxvf redis-3.2.4.tar.gz
cd redis-3.2.4/
make
#make test
taskset -c 0 make test
make install
cp redis.conf /etc
sed -i "s%daemonize no%daemonize yes%g" /etc/redis.conf
echo "[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/bin/redis-cli -p 6397 shutdown
[Install]
WantedBy=multi-user.target
">>/usr/lib/systemd/system/redis.service
systemctl enable redis
systemctl start redis
systemctl status redis
本部分需要注意的部分:
由于是虚拟机并且只有1个核所以 taskset -c 只能用 0
cat /proc/cpuinfo |grep process|wc -l 可以查看自己的核心数
daemonize yes 把no改成yes,默认在后台程序方式运行
生成系统命令,以及设置开机启动,启动redis,最后查看一下resis的状态。
三、配置文件部分
自己感触最深的部分是:bind,由于自己以前的知识以为bind是绑定的服务器的地址,所以感觉bind 127.0.0.1 是可以的。其实在这里跟之前的listen是差不多是一个道理,在这里这个bind差不多是监听的意思,bind 后面跟的IP地址可以使用redis 其他的IP不可以,但是在bind 127.0.0.1 注释以后是监听所有的IP。
如果是多内网IP可以使用 bind 192.168.1.2 192.168.1.3 用空格间隔
也可以用两行 bind 192.168.1.2
bind 192.168.1.3
在注释掉bind 127.0.0.1 以后其他配置不做修改,所有IP的都可以连接使用redis,但是使用过程中会出现这个提示:
大体意思就是 redis运行在保护模式下,并且没有指定绑定的IP地址,客户端也不需要认证的密码,在这种情况下只允许lookback(127.0.0.1)连接。为了解决这个问题给出了4种解决方式:
1>、#redis-cli 登陆以后 使用 CONFIG SET protected-mode no ,暂时关闭保护模式。使用"CONFIG REWRITE"使此配置永久生效。
2>、可以修改配置文件,可以使用下面语句,并且重启redis服务。
sed -i "s/protected-mode yes/protected-mode no/g" /etc/redis.conf
3>、如果仅是测试使用可以在启动的时候加上 --protected-mode no
4>、就是 要么绑定IP地址 ,要么设置一个密码,密码设置方式如下:修改配置文件
requirepass 123456
如果使用密码在登陆的需要指定密码
redis-cli -h 192.168.1.203 -p 6379 -a 123456
到此实验基本成功,过程中遇到的问题也一步步解决。come on, boy!!
下面关于Redis的文章您也可能喜欢,不妨参考下:
Ubuntu 14.04下Redis安装及简单测试
Ubuntu 16.04环境中安装PHP7.0 Redis扩展
CentOS 7.0 安装Redis 3.2.1详细过程和使用常见问题