Redis单节点安装
1.下载tar包至/opt/redis
2.解压tar包
tar -xvf redis-4.0.14.tar.gz
3. cd redis-4.0.14
make一下。
单节点的redis准备就绪。
cd /opt/redis/redis-4.0.14
vi redis.conf
修改项如下:
(1)绑定端口,port 10001
(2)绑定IP,bind 10.200.195.65
(3)指定数据存放路径,dir /opt/redis/redis-4.0.14/dbfile 可选
(4)后台启动,daemonize yes
(5)指定持久化方式,appendonly yes
(6)requirepass joey
(7) aof-use-rdb-preamble yes //这种格式被用在重写AOF文件的时候,重写用更紧凑更快速的方式生成RDB文件,AOF流追加到这个文件上,这样的话,AOF持久化重写和重新加载的速度更快
(8) activedefrag yes //整理内存碎片化了,能在运行的过程中回收内存空间
启动redis
./redis-server ../redis.conf
连接redis
./redis-cli -p 10001 -h 10.200.195.65 -a wxbc
字符串操作
集合的操作
数组 List
RPUSH rpush name one , rpush name two three
lrange name 0 -1
RPOP
LPuSH
LPOP
LLEN
其他数据结构自行测试,
关于集群方式搭建,参考之前的一篇 分布式缓存Redis集群搭建
redis-desktop-manager连接
info clients //获取redis当前的连接数状态
config get maxclients //获取当前最大连接数
Redis事务
对于Redis的事务其实和我们在编写JDBC的应用程序时所使用的事务是基本一致的,有一点区别是,当Redis的事务中有一条命令发生异常时,并不会对数据进行回滚;而JDBC会针对事务的回滚。也是说Redis事务并没有维持其原子性。
Redis事务流程
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
Redis事务命令
命令 | 详解 |
---|---|
MULTI | 标记一个事务块的开始。 |
EXEC | 执行所有事务块内的命令。 |
DISCARD | 取消事务,放弃执行事务块内的所有命令。 |
UNWATCH | 取消 WATCH 命令对所有 key 的监视。 |
事务演示
1.编译阶段错误,没法exec提交
2.执行阶段出错, 不影响前后的命令执行
Redis发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
发布
订阅
Redis发布订阅命令
命令 | 详解 |
---|---|
PSUBSCRIBE pattern [pattern ...] | 订阅一个或多个符合给定模式的频道。 |
PUBSUB subcommand [argument [argument ...]] | 查看订阅与发布系统状态。 |
PUBLISH channel message | 将信息发送到指定的频道。 |
PUNSUBSCRIBE [pattern [pattern ...]] | 退订所有给定模式的频道。 |
SUBSCRIBE channel [channel ...] | 订阅给定的一个或多个频道的信息。 |
UNSUBSCRIBE [channel [channel ...]] | 指退订给定的频道。 |
Redis发布订阅演示
发布一个为top1的主题,消息为m1
新开一个窗口,订阅top1主题的内容
再新开一个窗口,订阅top1主题的内容,模拟多个client
多个订阅者都拿到了最新消息m6,就这么多,更多的应用后续再完善。