一:简介
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
1.1存储
1.1.2 软件获取和帮助
官方网站:https://redis.io
官方各版本下载地址:http://download.redis.io/releases/
Redis 中文命令参考:http://redisdoc.com
中文网站1:http://redis.cn
中文网站2:http://www.redis.net.cn
1.13功能特性
• 高速读写
• 数据类型丰富
• 支持持久化
• 多种内存分配及回收策略
• 支持事务
• 消息队列、消息订阅
• 支持高可用
• 支持分布式分片集群
1.14企业缓存数据库解决方案对比
• Memcached: 优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash 多核结构、多线程读写性能高。 缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨 机房数据同步困难、架构扩容复杂度高
• Redis: 优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定 义虚拟内存、支持分布式分片集群、单线程读写性能极高 缺点:多线程读写较Memcached慢
• Tair: 优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、 支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。 缺点:单机情况下,读写性能较其他两种产品较慢
1.15Redis应用场景
• 数据高速缓存
• 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
2.2客户端连接
[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.3编写配置文件
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 配置文件详细说明
2.42Redis安全配置
• Bind 指定IP进行监听 bind ip1 ip2 ip3 ip4
• 禁止protected-mode protected-mode yes/no (保护模式,是否只允许本地访问)
• 增加requirepass {password}
requirepass root
• 在redis-cli中使用 auth {password} 进行认证
2.43编写启动脚本
#!/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
2.5 redis多实例
注意:本次多实例配置基于单实例配置完成后
启动三个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>
至此:服务配置完成