redis 命令总结

本文围绕Redis展开,介绍了Redis客户端命令,如设置过期时间等。详细阐述了Redis的五种数据类型(字符串、列表、集合、散列、有序集合)的操作命令,还提及HyperLogLog、bitmap的使用,以及Redis的事务操作,包括multi、exec、watch等命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 全局: redis-cli,redis客户端;远程例子 redis-cli -h 127.0.0.1 -p 6379 -a "sendinfo"   del [key];exists [key];
    Expire key time;为key设置过期时间,time单位为秒
    pexpire ...;和expire命令相同,只是过期时间单位为毫秒,pttl..相对应的命令都加p
    expireat 。。。。用时间戳来作为过期时间(单位秒)
    pexpireat 。。。。用时间戳来作为过期时间(单位毫秒)
    ttl key:检查k还有多长时间过期,-2为k不存在,-1为永久
    persist key:清除过期时间,成功 1,不存在或永久0。。。。。字符串 set key aa 命令会取消过期时间,其他类型没关系
    
    setex key seconds value;(类似于  SET key value
                  EXPIRE key seconds  # 设置生存时间)原子性操作
    SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
            EX seconds ? 设置指定的到期时间(以秒为单位)。
            PX milliseconds - 设置指定的到期时间(以毫秒为单位)。
            NX - 仅在键不存在时设置键。
            XX - 只有在键已存在时才设置。
        例:SET mykey "redis" EX 60 NX------以上示例将在键“mykey”不存在时,设置键的值,到期时间为60秒。
前言:
    redis有五种数据类型,string,列表,集合,有序集合,散列
1.    set [key] [value] ;
    get [get];
    mset [key1] [value1] [key2] [value2]....;
    mget ...;
    incr [key];增加1
    decr [key];递减1
    incrby [key] n; 增加n的数值;
    decrby [key] n;减少n的数值;
    incrbyfloat [key] n.n;追加小数如:incrbyfloat str 2.3
    append [key] " string";在value尾部追加字符串,加双引号来区分空格,返回值为操作后的总长度
    strlen [key] ;返回占用字节数的长度,汉字的话返回(汉字*3,utf-8占三个字节)
    ps:
2.列表(可重复)   语法 lpush [key] value
     lpush:将给定值推入列表的左端,返回当前列表值的个数
    rpush:右端
    lrange [key] 0 -1(0到-1表示所有值)
    lindex [key] 1;返回当前列表第2个元素的位置(下标从0开始)lset [key] index value,gei index 下标值赋值
    ltrim key a b;删除 a-b之外的值~
    lpop [key];删除列表左边一个数据
    rpop [key];右。。;
    llen [key];返回列表长度,key不存在返回0
    lrem [key] num value;当num>0 从左开始删除前numde value 值,num<0 从又...,num=0 del all;
    linsert key before|after val value; 从左开始查找val元素,找到然后根据before|after 把value插入到val前或后;
    rpoprpush key1 key2 ;在key1右边弹出一个元素然后压入key2(整个过程是原子性的),返回key2元素个数;
          可以做任务队列
3.集合(散列表来实现不重复建,无序)
    sadd [Key] [value];成功返回 1 else 0;
    smembers [Key];返回该集合所有元素(集合元素很多会很慢);
    sismember [key] [value];检查该集合的该元素是否存在;不存在 0,else 1;
    srem [key] [Value];移除该元素,返回结果为移除元素的个数
    spop key 因为集合无序 ,所以随机选择一个值弹出
    scard key;获取元素个数
    srandmember key count;在集合中随机获取count个值,count>0获得值不重复  <0可能重复
    集合运算:
        sdiff(差集);
        sadd seta 1 2 3; sadd setb 234; sadd setc 345;
        sdiff seta setb => 1;
        sdiff seta setb setc  => 1; ps:只返回左边集合的差集;

        sinter(交集);
        sinter seta setb setc =>3;
        
        sunion(并集)
        sunion seta setb setc=>1 2 3 4 5
        
        sdiffstore key key1 key2 ...;把运算的结果放人key键中
        sinterstore ...
        sunionstore ...
4.散列    (对象很像)
    1.hset [key] [属性] [value]  hset user:1 name wangdage;
    2.hget ...
    3.hmset [key] [属性] [value] [属性] [value] ...;  hmset user:1 name wangdage age 12;
    4.hmget ...
    5.hmgetall [key] ;
    6.hdel [key] [属性];ps:删除某个键下的某个建(属性);hdel user:1 name;
    7.hincrby  user:1 age 1;为散列表age 增加1(数值)
    8.hexists [key] name;判断字段是否存在 true:1 else 0,key 不存在 0;
    9.hsetnx [key] name laowang;(原子性)和 hset 类似,字段存在则不做操作;
    10.hkeys [key];获取所有字段; hvals ..all 字段值; hlen [key] 字段数量

5.有序集合(按照分值排序,增加一列数字来维护排序)
    zadd [key] [分值] [value]
    zrange [key] 0 -1(所有数据 zrange treemap 0 -1 withscores(显示分数) )从小到大
    zrange [key] 0 -1 limit a b;获取a偏移量前b个数据
     zrevrange [key] 0 -1 withscores# 从大到小
    zrangebyscore [key] [0-n](分值范围,包含0 ,n的值)  withscores ;根据分值查询;0-(n 不包含n分的值;
        0- +inf(无穷)-inf(负无穷);    zrangebyscore [key] 0-n limit a b;
    zrem [key] [val];移除某值,成功 1 else 0;
    zincrby treemap 5.33  xiaoxiaodi;为treemap xiaoxiaodi成员增加5.33分;
    zscore treemap c;返回该成员的 分值;没有则返回 nil ;treemap 不为有序集合返回error
    zcard key ;返回集合个数
    zcount key a b;返回分值a-b之间成员的个数
    zremrangebysore key min max ;按照分数范围删除成员
    zrank key val;获取取元素排名,从左开始;     zrevrank key val;从右。。
    zinterstore(交集) newset 2 key1 key2 WEIGHTS [ num1 num2 ... ] aggregat [sum|max|min] withscores
        计算key1key2集合的交集给newset集合,weights 为分数的权重,即key1的分数*num1 然后在根据aggregat
        后面的参数来计算(sum时newset的分数取key1+key2的分数,max取其中最大,min。。。)
    Zunionstore(并集)...


6.HyperLogLog 

作用:计数并去重,不精确(标准误差是 0.81%),超级节省内存

场景:uv(页面的访问用户数)

pfadd key element [element …] ; pfadd  2019_07_06:unique:ids  "userid1"  "userid2"   "userid3"  ...  (存的时候会去重)

pfcount key [key ]  ;pfcount key1 key2    (统计多个key的总数 并去重)

pfmerge destkey sourcekey [sourcekey ...]     合并多个key 到 destkey 并去重

7. bitmap (位图,位数组)

      setbit key offset value    ;  设置键的第offset个位的值(从0算起)

      gitbit key offset;

      bitcount key [start][end];获取Bitmaps指定范围值为1的个数,[start]和[end]代表起始和结束字节数,不要[start][end]也可以

      bitop op destkey key[key....] ;  op为(and,or,,)  bitop是一个复合操作,它可以做多个Bitmaps的and(交集)、or(并
集)、not(非)、xor(异或)操作并将结果保存在destkey中。and操作为 交集,or为并集

      bitpos key targetBit [start] [end] ; [start] [end]  范围内第一个为targetBit(0 或 1) 的偏移量

      
7.事物
    multi 开始事物,exec退出事物 (事物中的命令是在exec之后执行)
    watch 监控一个或多个K,一旦其中一个被修改(或删除)当一个key因为过期被删并不会认为该k被改变,阻止之后的一个事物执行,遇到exec结束
    unwatch 取消上一个watch
    SETNX key value;    将 key 的值设为 value ,当且仅当 key 不存在。
            SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
        返回值:
                设置成功,返回 1 。
                设置失败,返回 0 。













 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值