zoukankan      html  css  js  c++  java
  • Rredis的安装与常用命令

    一、Redis的安装

    1、下载与解压

     wget http://download.redis.io/releases/redis-5.0.3.tar.gz

     tar xzf redis-5.0.3.tar.gz 

    2、编译与安装

    # 进入到解压目录
    cd redis-5.0.3 # 进入到解压好的redis-5.0.3目录下,进行编译与安装 make
    # 修改 redis.conf 里的 daemonize 为 yes;(使用 ?daemon 搜索)
    vi redis.conf
    # 启动并指定配置文件
    src
    /redis-server redis.conf

    3、验证Redis的启动

    # 验证启动是否成功 
    ps -ef | grep redis 
    
    # 进入redis客户端 
    src/redis-cli 
    
    # 退出客户端
    quit

     退出redis服务:
    (1)pkill redis-server
    (2)kill 进程号
    (3)src/redis-cli shutdown

    二、Redis的五种数据结构

    1、字符串 String

    1.1 String的常用命令

    常用操作

    • SET key value                        //存入字符串键值对
    • MSET key value [key value ...]   //批量存储字符串键值对
    • SETNX key value                        //存入一个不存在的字符串键值对
    • GET key                                      //获取一个字符串键值
    • MGET key [key ...]                      //批量获取字符串键值
    • DEL key [key ...]                         //删除一个键
    • EXPIRE key seconds                 //设置一个键的过期时间(秒)

    原子加减

    • INCR key                           //将key中储存的数字值加1
    • DECR key                         //将key中储存的数字值减1
    • INCRBY key increment     //将key所储存的值加上increment
    • DECRBY key decrement   //将key所储存的值减去decrement

    1.2 应用场景

    单值缓存

      SET key value
      GET key

    对象缓存
       (1) SET user:1 value(json格式数据)
       (2) 需要存储记录: id=1,name=zhangsan,balance=1888,使用批量存储的方式,如下:

            批量存入:MSET user:1:name zhangsan  user:1:balance 1888
            批量获取:MGET user:1:name user:1:balance

    分布式锁

      SETNX 作用:若key不存在,则执行成功返回1;若key存在,则执行失败返回0;
        SETNX product:10001 true //返回1代表获取锁成功
      SETNX product:10001 true //返回0代表获取锁失败
        ... 执行业务操作 ...
      DEL product:10001 //执行完业务释放锁

      SET key value [EX seconds] [PX milliseconds] [NX|XX] 

      SET product:10001 true ex 10 nx //防止程序意外终止导致死锁设置超时时间

    计数器
        INCR article:readcount:{文章id} 
        GET article:readcount:{文章id}

    Web集群session共享
       spring session + redis实现session共享

    分布式系统全局序列号
       INCRBY orderId 1000 //redis批量生成序列号并放入到应用的内存中提升性能

    2、哈希 hash

     2.1 hash 的常用命令

    Hash常用操作
           HSET key field value              //存储一个哈希表key的键值;若key存在,则将 field value 直接插入;
       HSETNX key field value            //存储一个不存在的哈希表key的键值
       HMSET key field value [field value ...] //在一个哈希表key中存储多个键值对
       HGET key field                    //获取哈希表key对应的field键值
       HMGET key field [field ...]       //批量获取哈希表key中多个field键值
       HDEL key field [field ...]        //删除哈希表key中的field键值
       HLEN key                      //返回哈希表key中field的数量
       HGETALL  key                   //返回哈希表key中所有的键值

       HINCRBY key field increment       //为哈希表key中field键的值加上增量increment

    2.2 应用场景

     对象缓存

     HMSET user {userId}:name zhangsan {userId}:balance 2000
      HMSET user 1:name zhuge 1:balance 1888
      HMGET user 1:name 1:balance

    哈希与字符串比较,哈希更适合存储对象;

     电商购物车

      以用户ID为 key,商品ID为 field,商品数量为 value;

       添加商品:hset cart:1001 10088 1
       增加数量:hincrby cart:1001 10088 1
       商品总数:hlen cart:1001
       删除商品:hdel cart:1001 10088
       获取购物车所有商品:hgetall cart:1001

    优点:

       (1) 同类数据归类整合储存,方便数据管理;
       (2) 相比string操作消耗内存与cpu更小;
       (3) 相比string储存更节省空间;

    缺点:

       (1) 过期功能不能使用在field上,只能用在key上;
       (2) Redis集群架构下不适合大规模使用;

    3、列表 list

    3.1 常用命令

    LPUSH key value [value ...]    //将一个或多个值value插入到key列表的表头(最左边)
    RPUSH key value [value ...]    //将一个或多个值value插入到key列表的表尾(最右边)
    LPOP key           //移除并返回key列表的头元素
    RPOP key           //移除并返回key列表的尾元素
    LRANGE key start stop      //返回列表key中指定区间内的元素,区间以偏移量start和stop指定

    BLPOP key [key ...] timeout   //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
    BRPOP key [key ...] timeout    //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待

    3.2 应用场景

     微博消息和微信公号消息

     假如,小一关注了小李、小明;

    (1)小李发了一个微博,消息ID为 1001,小一需要看到这条微博,则将这条微博的消息ID放到小一的消息中:

          LPUSH msg:{小一的ID}  1001

    (2)小明发了一个微博,消息ID为 1002,小一需要看到这条微博,则将这条微博的消息ID放到小一的消息中:

          LPUSH msg:{小一的ID}  1002

    (3)小一要查看最新微博消息的前5条消息

      LANGE msg:{小一的ID} 0 5 

    4、集合 set

    4.1 常用命令 

    SADD key member [member ...]   //往集合key中存入元素,元素存在则忽略;
    SREM key member [member ...]    //从集合key中删除元素
    SMEMBERS key              //获取集合key中所有元素
    SCARD key           //获取集合key的元素个数
    SISMEMBER key member      //判断member元素是否存在于集合key中
    SRANDMEMBER key [count]      //从集合key中选出count个元素,元素不从key中删除
    SPOP key [count]          //从集合key中选出count个元素,元素从key中删除

    SINTER key [key ...]           //交集运算
    SINTERSTORE destination key [key ..]    //将交集结果存入新集合destination中
    SUNION key [key ..]            //并集运算
    SUNIONSTORE destination key [key ...]   //将并集结果存入新集合destination中
    SDIFF key [key ...]           //差集运算
    SDIFFSTORE destination key [key ...]     //将差集结果存入新集合destination中

    4.2 应用场景

    微信小程序的抽奖

    点击参与抽奖加入集合:SADD key {userlD}
    查看参与抽奖所有用户:SMEMBERS key
    抽取count名中奖者:SRANDMEMBER key [count] / SPOP key [count]

    微信朋友圈点赞,收藏,标签

    集合操作实现微博关注模型

    假如关注的关系如下:

    xiaoyi 关注的人: xiaoyiSet -- {huahua, mingming,  liangliang}

    huahua 关注的人: huahuaSet -- {xiaoyi, mingming,  liangliang,  bobo}

    mingming 关注的人:mingmingSet -- {xiaoyi, huahua, liangliang, bobo, yuer}

    xiaoyi(我) 进入到 huahua 的主页:

    (1)共同关注的人:

    sinter xiaoyiSet huahuaSet   -->  {mingming, liangliang}

    (2)我关注的人也关注他(huahua):

    mingming关注的人是否关注huahua: sismember mingmingSet huahua   

    liangliang关注的人是否关注huahuat:sismember liangliangSet huahua

    (3)我可能认识的人:(花花关注的人我没有关注)

    sdiff huahuaSet xiaoyiSet   --->  {xiaoyi, bobo}

    5、有序集合 zset

    5.1 常用命令 

    ZADD key score member [[score member]…]     //往有序集合key中加入带分值元素
    ZREM key member [member …]          //从有序集合key中删除元素
    ZSCORE key member              //返回有序集合key中元素member的分值
    ZINCRBY key increment member         //为有序集合key中元素member的分值加上increment
    ZCARD key                    //返回有序集合key中元素个数
    ZRANGE key start stop [WITHSCORES]      //正序获取有序集合key从start下标到stop下标的元素
    ZREVRANGE key start stop [WITHSCORES]       //倒序获取有序集合key从start下标到stop下标的元素


    ZUNIONSTORE destkey numkeys key [key ...]    //并集计算
    ZINTERSTORE destkey numkeys key [key …]     //交集计算

  • 相关阅读:
    android 开机启动
    android 获取lanucher 列表
    原创高端影楼人像专业磨皮法教程详解 附PSD源码
    [转]在SQLPLUS启动和停止Oracle数据库
    挑印刷时间最新的地图!
    Eclipse3.2下进行ArcGIS Server 9.2 Java WebADF开发手记 Eclipse使用技巧
    [藏]常用的匹配正则表达式和实例
    [藏]C# 中的常用正则表达式总结
    [转]使用uDig制作geoserver中需要的style
    [转]geoserver与OpenLayers配置入门
  • 原文地址:https://www.cnblogs.com/yufeng218/p/13363470.html
Copyright © 2011-2022 走看看