zoukankan      html  css  js  c++  java
  • 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,就这么多,更多的应用后续再完善。

  • 相关阅读:
    10分钟教你用Python玩转微信之抓取好友个性签名制作词云
    1. 配置win7下odbc数据源找不到数据库驱动的问题
    1. 加签和会签的区别
    4. mysql 1449 : The user specified as a definer ('test'@'%') does not exist 解决方法
    1. 在config.ini文件中加入dm.park.time=1,会使uap中的tomcat启动加快
    37. sqlplus工具连接服务端或其他电脑的oracle方式
    36. Oracle查询数据库中所有表的记录数
    4. mysql 查看数据库中所有表的记录数
    35. Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
    4. powerdesigner 生成sql脚本步骤
  • 原文地址:https://www.cnblogs.com/xifenglou/p/13272744.html
Copyright © 2011-2022 走看看