一.Redis介绍
1.Redis重要特性
1. 速度快
c语⾔编写的
代码优雅简洁
单线程架构
2. ⽀持多种数据结构
字符串,哈希,列表,集合,有序集合
3. 丰富的功能
天然计数器
键过期功能
消息队列
4. ⽀持客户端语⾔多
php,java,go,python
5. ⽀持数据持久化
所有在运⾏的数据都是放在内存⾥的
⽀持多种数据久化格式,RDB,AOF,混合持久化
6. ⾃带多种⾼可⽤架构
主从,哨兵,集群
2.企业缓存产品介绍
1) Memcached:
优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash。多核结构、多线程读写性能高。
缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高
2) Redis
优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
缺点:多线程读写较Memcached慢,所以更加适合单机多实例的环境
新浪微博、京东、直播类平台、游戏
结论:memcache与redis在读写性能的对比
memcached 适合,多用户访问,每个用户少量的rw
redis 适合,少用户访问,每个用户大量rw , 推荐多实例的环境
3)Tair:
优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
缺点:单机情况下,读写性能较其他两种产品较慢
3.Redis使用场景
1. 缓存---键过期
把session数据缓存在redis⾥,过期删除
缓存⽤户信息,缓存mysql部分数据,⽤户先访问redis,若redis没命中,再访问mysql,然后回写给redis
商城优惠卷过期、短信验证码过期
2. 排⾏榜---列表&有序集合
热度/点击量、直播间礼物打赏排⾏榜
3. 计数器---天然计数器
帖⼦浏览数、视频播放次数、评论次数、点赞/点踩
4. 社交⽹络---集合
粉丝、共同好友/可能认识的⼈、兴趣爱好/标签
5. 消息队列
ELK缓存⽇志、聊天记录
Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景
Redis:单核的缓存服务,单节点情况下,更加适合于少量用户,多次访问的应用场景。
Redis一般是单机多实例架构,配合redis集群出现。
二. Redis安装部署
1.Redis官网
2.版本选择
2.x 非常老
3.x 主流 redis-cluster
4.x 混合持久化
5.x 最新稳定版 新增加了流处理类型
3.规划目录
/data/soft 下载目录
/opt/redis_6379/{conf,logs,pid} 安装目录,日志目录,pid目录,配置目录
/data/redis_6379/ 数据目录
4.安装命令
1)创建下载目录,并下载包
mkdir /data/soft -p
cd /data/soft/
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2)解压创建软连接
tar zxf redis-5.0.7.tar.gz -C /opt/
cd /opt
ln -s /opt/redis-5.0.7 /opt/redis
3)安装
cd /opt/redis
make
make install
注:make和make install的区别
make是用来编译,它从Makefile中读取指令,然后编译。
make install是用来安装,它也从Makefile中读取指令,安装到指定的位置。
5.编写配置文件
1. 创建需要的目录
mkdir -p /opt/redis_6379/{conf,logs,pid}
mkdir -p /data/redis_6379
2. 编写配置文件
cat >/opt/redis_6379/conf/redis_6379.conf<<EOF
daemonize yes
bind 127.0.0.1 10.0.0.51
port 6379
pidfile /opt/redis_6379/pid/redis_6379.pid
logfile /opt/redis_6379/logs/redis_6379.log
EOF
redis.conf配置文件说明:*
daemonize yes 是否后台运行
port 6379 默认端口
pidfile /opt/redis_6379/pid/redis_6379.pid pid文件位置
logfile /opt/redis_6379/logs/redis_6379.log 日志文件位置
6.启动命令
redis-server /opt/redis_6379/conf/redis_6379.conf
7.检查
ps -ef|grep redis
netstat -lntup|grep 6379
8.连接Redis
[root@db01 ~]# redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>
9.关闭命令
1)# redis-cli
> SHUTDOWN
2)# redis-cli shutdown
3)# kill
# pkill
10.system启动配置
1. 创建redis用户
groupadd redis -g 1000
useradd redis -u 1000 -g 1000 -M -s /sbin/nologin
2. 授权
chown -R redis:redis /opt/redis*
chown -R redis:redis /data/redis*
3. 编写systemd的配置文件
cat >/usr/lib/systemd/system/redis.service<<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/redis-server /opt/redis_6379/conf/redis_6379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF
4. 加载启动
systemctl daemon-reload
systemctl start redis
5. 测试
# redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"