redis是一个key-value存储系统。和Memcached相似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操做,并且这些操做都是原子性的。在此基础上,redis支持各类不一样方式的排序。与memcached同样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。html
官方网站:https://redis.ioweb
官方各版本下载地址:http://download.redis.io/releases/redis
Redis 中文命令参考:http://redisdoc.comdocker
中文网站1:http://redis.cn数据库
中文网站2:http://www.redis.net.cnvim
• 高速读写缓存
• 数据类型丰富安全
• 支持持久化服务器
• 多种内存分配及回收策略多线程
• 支持事务
• 消息队列、消息订阅
• 支持高可用
• 支持分布式分片集群
• Memcached: 优势:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash 多核结构、多线程读写性能高。 缺点:无持久化、节点故障可能出现缓存穿透、分布式须要客户端实现、跨 机房数据同步困难、架构扩容复杂度高
• Redis: 优势:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定 义虚拟内存、支持分布式分片集群、单线程读写性能极高 缺点:多线程读写较Memcached慢
• Tair: 优势:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、 支持分布式分片集群、支撑了几乎全部淘宝业务的缓存。 缺点:单机状况下,读写性能较其余两种产品较慢
• 数据高速缓存
• web会话缓存(Session Cache)
• 排行榜应用
• 消息队列
• 发布订阅等
环境检查
[root@docker1 local]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@docker1 local]# uname -r
3.10.0-862.2.3.el7.x86_642018-05-17
[root@docker1 src]# ./redis-cli
127.0.0.1:6379> set foo ba
OK
127.0.0.1:6379> get foo
"ba"
127.0.0.1:6379>
2.31精简化配置文件
[root@docker1 ~]# cd /usr/local/redis
[root@docker1 redis]# cp redis.conf{,.bak}
[root@docker1 redis]# grep -Ev '^$|#' redis.conf.bak > redis.conf
[root@docker1 redis]# cp redis.conf /etc/
2.32编辑配置文件
vim /etc/redis.conf
https://www.cnblogs.com/zhang-ke/p/5981108.html 配置文件详细说明
• Bind 指定IP进行监听 bind ip1 ip2 ip3 ip4
• 禁止protected-mode protected-mode yes/no (保护模式,是否只容许本地访问)
• 增长requirepass {password}
requirepass root
• 在redis-cli中使用 auth {password} 进行认证
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. # chkconfig: - 85 15 REDISPORT=6379 EXEC=/usr/local/src/redis-server CLIEXEC=/usr/local/src/redis-cli PIDFILE=/var/run/redis.pid CONF="/usr/local/redis/redis.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; status) if [ -f $PIDFILE ] then echo "redis server is running....." else echo "redis is stopped" fi ;; *) echo "Please use start or stop or status" ;; esac
注意:本次多实例配置基于单实例配置完成后
启动三个redis多实例
mkdir /data/redis
mkdir 6380 6381 6382
复制redis的启动文件到不一样的redis实例中
[root@docker1 redis]# cp /usr/local/redis/src/redis-server /data/redis/6380
[root@docker1 redis]# cp /usr/local/redis/src/redis-server /data/redis/6381
[root@docker1 redis]# cp /usr/local/redis/src/redis-server /data/redis/6382
复制redis配置文件到不一样的redis实例中
[root@docker1 redis]# cp /etc/redis.conf /data/redis/6380
[root@docker1 redis]# cp /etc/redis.conf /data/redis/6381
[root@docker1 redis]# cp /etc/redis.conf /data/redis/6382
修改不一样redis实例的配置文件
# 修改程序存储目录 sed -i "/dir/s#.*#dir /application/redis/6380/#g" /data/redis/6380/redis.conf # 修改其余端口信息 sed -i "s#6379#6380#g" /data/redis/6380/redis.conf #容许远程链接redis
sed -i '/protected-mode/s#yes#no#g' /data/redis/6380/redis.conf
启动多实例
[root@docker1 6380]# /data/redis/6380/redis-server /data/redis/6380/redis.conf
[root@docker1 6380]# /data/redis/6380/redis-server /data/redis/6381/redis.conf
[root@docker1 6380]# /data/redis/6380/redis-server /data/redis/6382/redis.conf
复制redis启动文件到/usr/bin下,这样就能够在任意目录直接执行redis-cli链接客户端了
[root@docker1 ~]# cp /usr/local/redis/src/redis-cli /usr/bin/
[root@docker1 ~]# redis-cli
127.0.0.1:6379>
至此:服务配置完成