redis实战进阶

 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)接收消息。

发布

pubsub2

订阅

pubsub1

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,就这么多,更多的应用后续再完善。

原文地址:https://www.cnblogs.com/xifenglou/p/13272744.html