redis6基础
# redis6安装
可以用docker安装,也可以下载源码进行编译安装,先演示编译安装
# 1、安装编译所需环境gcc
# 确认gcc是否已安装及版本
gcc -v
# 安装gcc依赖
yum install gcc-c++ autoconf automake -y
# CentOS7默认安装的是4.8.5,而redis6.0只支持5.3以上版本,这里将gcc升级到9
yum install -y centos-release-scl scl-utils-build devtoolset-9-toolchain devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# 永久切换gcc版本
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
# 临时切换gcc版本
scl enable devtoolset-9 bash
# 查看gcc版本
gcc -v
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2、安装
wget -P /usr/local/src https://download.redis.io/releases/redis-6.2.5.tar.gz
tar -zxvf redis-6.2.5.tar.gz
cd redis-6.2.5
# 编译, 指定内存分配器为libc, 默认为jemalloc
make
# 安装,指定安装目录
make install PREFIX=/usr/local/redis
# 确认是否安装成功
cd /usr/local/redis/bin
#拷贝配置文件到bin下
cp /mnt/app/redis-6.2.5/redis.conf /usr/local/redis/bin
# 配置全局可以使用Redis命令
cp redis-cli /usr/bin/redis-cli
cp redis-server /usr/bin/redis-server
# 确认是否可以使用全局变量
redis-cli
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
参考文章 :
Centos7中搭建Redis6集群操作步骤 - 张冠胜 - 博客园 (cnblogs.com) (opens new window)
# 3、启动
修改redis.conf ,修改前先备份一下 cp redis.conf redis.conf.bak 修改redis.conf(128行)文件将里面的daemonize no
改成 yes,让服务在后台启动
redis-server -v #查看版本
redis-server /mnt/app/redis-6.2.5/redis.conf 或者 redis-server redis.conf
redis-cli
> info #查看信息,里面包含版本
firewall-cmd --zone=public --add-port=6379/tcp --permanent
2
3
4
5
# 设置开机启动
1、在系统服务目录里创建redis.service文件
vim /etc/systemd/system/redis.service
2、写脚本
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
3、重启系统服务
systemctl daemon-reload #重启系统服务
systemctl start redis.service #启动redis服务
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动
systemctl status redis.service #查看服务当前状态
systemctl restart redis.service #重新启动服务
systemctl list-units --type=service #查看所有已启动的服务
2
3
4
5
6
7
参考文章 :redis设置开机自启_城下cx的博客-CSDN博客_redis开机自启动 (opens new window)
# redis配置文件
Redis配置文件详解 - 吹静静 - 博客园 (cnblogs.com) (opens new window)
主要有设置后台运行(daemonize yes
)、放行所有ip(bind 0.0.0.0
)、设置访问密码()、最大内存、数据保存位置、持久化方式
# redis常用命令
redis-cli -a 123456 -p 6379 -h 192.168.56.160
keys *
info cpu
flushall 清除所有数据
2
3
4
5
redis常用命令 - 道高一尺 - 博客园 (cnblogs.com) (opens new window)
# redis的java客户端
jedis、Redisson和lettuce(springboot默认)
redis三个连接客户端框架的选择:Jedis,Redisson,Lettuce_弹指天下-CSDN博客_redisson和lettuce (opens new window)
# redis的事务
redis事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制, 并且事务在执行的期间不会主动中断 —— 服务器在执行完事务中的所有命令之后, 才会继续处理其他客户端的其他命令。multi开始组队,exec执行里面队列,discard回滚.
- 组队中某个命令出现了报告错误,exec执行时整个的所有队列都会被取消。
- exec时某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚
# redis八大类型的应用场景
String、hash、List、Set、ZSet、Bitmap、Geo、HyperLoglogs(统计 )
redis命令不区分大小写,key区分大小写
help @list
查看list类型有哪些命令
# String
分布式锁、统计阅读数
setnx key 1
set key uuid nx ex 10 #
incr article:001 #阅读001文章加1,递增加1
2
3
4
# hash
对应的java结构: Map<String,Map<Object,Object>>
购物车
hset cart:uid01 goods001 1 #添加商品到用户01的购物车
hset cart:uid01 goods002 1 goods003 2
hincrby cart:uid01 goods001 3 #增加001商品的数量,增加3
hgetall cart:uid01 #得到用户01的购物车里面的所有商品及购买数量
hlen cart:uid01 # 得到购物车里面的商品数量, 商品为key
2
3
4
5
6
7
# list
我喜欢的文章
lpush liks:uid001 1 2 3 #我喜欢的文章:1,2,3
llen liks:uid001 #我喜欢的文章数量
lrange liks:uid001 0 2 #列出我喜欢的文章,从0到2,即三篇,相当于分页
2
3
# set
抽奖活动、社交关系查找(共同关注 sinter、推荐关注 sdiff、)
sadd chouj:1001 1 2 3 4 5 6 7 8 9 #9个人来参加抽奖
scard chouj:1001 #返回集合的数量
smembers chouj:1001 #返回集合的成员
srandmember chouj:1001 2 #随机抽两个,这里不会从集合中移出
spop chouj:1001 3 #随机抽3个,这里会从集合中移出
srem chouj:1001 9 #移出9成员
sismember chouj:1001 9 #查询9是否在集合中
sinter chouj:1001 chouj:1002 #同时参加1001抽奖活动和1002抽奖活动的人
2
3
4
5
6
7
8
9
# zset
电影影院排名、排行榜
zadd paiming 100 mov1 200 mov2 #mov1分数为100,mov2分数为200,
zincrby paiming 20 mov1 #mov1增加20销量
zscore paiming mov1 #查看mov1的销量
zadd paiming 300 mov3 #添加mov3的销量,一批黑马来了
zrange paiming 1 2 withscores #显示有序集下标区间 1 至 2 的成员,下标从0开始,即排名第2,3的成员
zrevrange paiming 0 0 withscores #倒序排名
2
3
4
5
6
参考文档
Centos7下Redis6安装_jianghuchuang的博客-CSDN博客 (opens new window)
Redis 命令参考 — Redis 命令参考 (redisfans.com) (opens new window)
redis中文官方网站 (opens new window)
# redis发布和订阅
RedisMessageListenerContainer
/**
* redis 监听配置,监听 mp_redis_reload_topic,重新加载配置
* @param redisConnectionFactory redis 配置
* @return
*/
@Bean
public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
container.addMessageListener((message, bytes) -> {
log.warn("接收到重新加载公众号配置事件");
initServices();
}, new ChannelTopic(CacheConstants.MP_REDIS_RELOAD_TOPIC));
return container;
}
// 触发消息
redisTemplate.convertAndSend(CacheConstants.MP_REDIS_RELOAD_TOPIC, "重新加载公众号配置");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参考视频:
【No1383】最新Redis高级进阶实战视频教程-百度网盘下载-Java学习者论坛(javaxxz.com) (opens new window)
1、Redis最新版全面精讲_一站式Redis解决方案-慕课网 (imooc.com) (opens new window)