zoukankan      html  css  js  c++  java
  • redis消息、管道、事务、modules

    和redis建立socket链接

    nc localhost 6379
    [root@redis ~]# nc localhost 6379
    keys *
    
    *5
    $6
    unkey2
    $5
    unkey
    $2
    k1
    $2
    k2
    $6
    unkey1
    
    set nckey a
    +OK
    flushall
    +OK
    
    
    
    [root@redis ~]# echo -e "set k2 99
     incr k2
     get k2" | nc localhost 6379
    +OK
    :100
    $3
    100
    

      

    管道pipelingling

    让通信成本变低

     

     

     

    发布订阅

    订阅方先订阅:
    127.0.0.1:6379> subscribe ooxx
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "ooxx"
    3) (integer) 1
    1) "message"
    2) "ooxx"
    3) "one"
    
    发布方在发布:
    127.0.0.1:6379> publish ooxx one
    (integer) 1
    
    订阅消费信息:
    3) "one"

    事务

    事务1操作k1
    事务2操作k1
    
    谁先提交事务谁先处理
    例如:
    
    第一台:
    127.0.0.1:6379> get k1
    "bbb"
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> get k1
    QUEUED
    
    第二台操作:
    127.0.0.1:6379> get k1
    "bbb"
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set k1 ccc
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    127.0.0.1:6379> get k1
    "ccc"
    
    第一台操作:
    127.0.0.1:6379> exec
    1) "ccc"
    
    
    
    监控:
    第一台:
    127.0.0.1:6379> keys *
    1) "k1"
    127.0.0.1:6379> watch k1
    OK
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> get k1
    QUEUED
    127.0.0.1:6379> keys *
    QUEUED
    
    
    第二台:
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> keys *
    QUEUED
    127.0.0.1:6379> set k1 bbb
    QUEUED
    127.0.0.1:6379> exec
    1) 1) "k1"
    2) OK
    127.0.0.1:6379> keys *
    1) "k1"
    
    第一台:
    127.0.0.1:6379> exec
    (nil)
    

      

    redisbloom布隆过滤器

    1,访问redis.io
    2,modules
    3,访问RedisBloom的github
    wget  https://github.com/RedisBloom/RedisBloom/archive/master.zip
    4.yum install unzip
    5.unzip *.zip
    6.make
    7.cp bloom.so  /opt/mashibing/redis5/
    8.redis-server --loadmodule     /opt/bigdata/redis5/redisbloom.so
    9 ,redis-cli  
    10: 测试
    bf.add  a  abc
    bf.exits  a  abc
    
    1,穿透了,不存在
    2,client,增加redis中的key,value标记
    3,数据库增加了元素
    4,完成元素对bloom的添加
    

      

    redis作为数据库/缓存的区别缓存!!!!

    1.缓存数据不重要,不是全量数据
    2.缓存应该随着访问变化(只存储热数据)
    
    缓存:
    缓存里的数据怎么能随着业务变化,只保留热数据,因为内存大小式有限的,也就是瓶颈
    

      

    vi /etc/redis/6379.conf

    bind 127.0.0.0.1 配置谁能访问
    requirepass foobared 设置密码 bind和requirepass同时配置 外部才能访问
    
    include /path/to/other.conf 配置文件也可以写这里
    
    loadmodule /path/to/my_module.so 启动时候配置这个参数,也可以将配置文件加载进来
    例如布隆: redis-server --loadmodule /opt/bigdata/redis5/redisbloom.so 
    
    
    daemonize yes yes是后台启动,no是控制台
    
    loglevel notice 日志级别
    
    logfile /var/log/redis_3679.log
    
    databases 16 默认16个库
    
    
    内存配置
    maxmemory <bytes> 建议1-10G
    回收策略
    maxmemory-policy noeviction 默认不回收
    volatile-LFU 碰了多少次(回收使用最少的键)
    allkeys-LRU  多久没碰他(回收长时间)
    
    key有效期:
    1.会随着访问延长? 不会
    2.发生写,会剔除原过期时间
    3.一直倒计时
    
    淘汰过期原理:
    1.主动: 客户端访问它时,key会被发现并主动的过期。
    2.被动:  (概率算法)周期轮询检测,使得过期key低于25%
    

      

     

  • 相关阅读:
    浅谈MVVM模式和MVP模式——Vue.js向
    浅谈JavaScript中的null和undefined
    js的单线程和异步
    字符串替换replace方法
    数组的长度、数组元素的添加和删除
    去掉数组中的空元素
    创建数组方法、数组元素的读和写
    Android中H5和Native交互的两种方式
    请求抓取工具
    css层叠规则(层叠样式表)
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14295915.html
Copyright © 2011-2022 走看看