• 1.Redis基础命令


    • 重要概念

    redis是单线程模型,所有命令都会进入一个队列,然后依次被执行。

    • 全局命令
    >>>select dbindex       #切换数据库,默认有16个库,库标识符为0-15
    >>>keys pattern         #列出匹配模式的键(*、?、[]、[^])
    >>>dbsize               #键总数
    >>>exists key           #检查键是否存在
    >>>del key              #删除键
    >>>expire key           #键过期设置
    >>>type key             #键类型
    >>>object encoding key  #显示值的内部编码
    >>>rename key newkey    #键重命名
    >>>renamenx key newkey  #键重命名,确保只有newkey不存在时才重命名,防止覆盖
    >>>randomkey            #随机返回一个键
    >>>expire key seconds   #键在seconds秒后过期,过期时间为负数,键会立即删除,犹如del命令
    >>>pexpire key milliseconds #键在milliseconds毫秒后过期
    >>>expireat key timestamp   #键在秒级时间戳timestamp后过期
    >>>ttl/pttl key             #查询键的过期时间(状态:大于等于0的整数、-1、-2)
    >>>persist key              #将键的过期时间清除
    >>>migrate host port key|"" dist-db timeout [copy] [replace] [keys key...]  #迁移键
    
    • 字符串类型命令
    >>>set key value [ex seconds] [px milliseconds] [nx|xx]  #ex,px过期时间   nx不存在|xx存在
    >>>setex key seconds value          #等同于set..ex 创建时键值时设置过期时间
    >>>setnx key value                  #等同于set..xx 键不存在才创建
    >>>get key                          #获取值
    >>>mset key value [key value ...]   #批量设置值(节省多次网络传输时间)
    >>>mget key [key ...]               #批量获取值(节省多次网络传输时间)
    >>>incr key                         #值为整数才自增1,默认从0开始,其他值报错
    >>>decr key                         #自减1
    >>>incrby key increment             #自定义自增值(可以是负数)
    >>>decrby key decrement             #自定义自减值(可以是负数)
    >>>incrbyfloat key increment        #自定义自增值为浮点数(也可以是整数、负数)
    
    >>>hset key field value             #键 属性 值
    >>>hget key
    >>>hdel key field [field ...]       #删除一个或多个field
    >>>hlen key                         #计算field个数
    >>>hmset key field value [field value ...]
    >>>hmget key field [field ...]
    >>>hexists key field                #判断field是否存在
    >>>hkeys key                        #获取所有的field
    >>>hvals key                        #获取所有的value
    >>>hgetall key                      #获取所有的field-value
    >>>hincrby key field
    >>>hincrbyfloat key field
    >>>hstrlen key field                #计算value的字符串长度
    
    >>>rpush key value [value ...]       #右边插入元素
    >>>lrange key start end/0 -1         #从左到右获取列表的元素/所有元素
    >>>lpush key value [value ...]       #左边插入元素
    >>>linsert key before|after pivot value   #向某个元素前或者后插入元素
    >>>lindex key index                  #获取列表指定索引下标的元素
    >>>llen key                          #获取列表长度
    >>>lpop/rpop key                     #从列表左边/右边弹出元素
    >>>lrem key count value              #删除列表中count个value值(count<0代表从右向左删除)
    >>>ltrim key start end               #按照索引范围保留start到end的值
    >>>lset key index newvalue           #修改索引为index的值
    >>>blpop/brpop key [key ...] timeout #阻塞式弹出,timeout为0将一直阻塞
    

      在使用brpop时,有4点需要注意:

    1. 列表为空: 如果timeout=3,那么客户端要等到3秒后返回,如果 timeout=0,那么客户端一直阻塞等下去,直到列表添加了数据;
    2. 列表不为空: 客户端会立即返回;
    3. 如果是多个键,那么brpop会从左至右遍历键,一旦有一个键能弹出元素,客户端立即返回;
    4. 如果多个客户端对同一个键执行brpop,那么最先执行brpop命 令的客户端可以获取到弹出的值。

      实际上列表的使用场景很多,在选择时可以参考以下口诀:

    1. lpush+lpop=Stack(栈)
    2. lpush+rpop=Queue(队列)
    3. lpush+ltrim=Capped Collection(有限集合)
    4. lpush+brpop=Message Queue(消息队列)
    >>>sadd/srem key element [element ...]    #添加/删除元素
    >>>scard key                              #计算元素个数
    >>>sismember key element                  #判断元素是否在集合中
    >>>srandmember key [count=1]              #随机从集合中返回指定个数元素,元素不会删除
    >>>spop key [count=1]                     #随机从集合中弹出元素,元素会删除
    >>>smembers key                           #获取所有元素
    >>>sinter key [key ...]                   #求多个集合的交集
    >>>sunion key [key ...]                   #求多个集合的并集
    >>>sdiff key [key ...]                    #求多个集合的差集
    >>>sinterstore destination key [key ...]  #求多个集合的交集并保持,下同
    >>>suionstore destination key [key ...]
    >>>sdiffstore destination key [key ...]
    
    • 有序集合[4]

    >>>zadd key [NX|XX] [CH] [INCR] score member [score member ...]  #添加成员
    >>>acard key                                 #计算成员个数
    >>>zrank key member                          #顺序计算成员排名(从低到高)
    >>>zrevrank key member                       #逆序计算成员排名(从高到低)
    >>>zrem key member [member ...]              #删除成员
    >>>zincrby key increment member              #增加成员的分数
    >>>zrange key start end [withscores]         #返回指定排名范围的成员[分数]
    >>>zrevrange key start end [withscores]      #同上,逆序
    >>>zrangebyscore key min max [withscores] [limit offset count]    
    #返回指定分数范围的成员,同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大:
    127.0.0.1:6379> zrangebyscore user:ranking (200 +inf withscores
    1) "tim"
    2) "220"
    3) "martin"
    4) "250"
    5) "tom"
    6) "260"
    >>>zrevrangebyscore key max min [withscores] [limit offset count] #同上,逆序
    >>>zcount key min max                        #返回指定分数范围成员个数
    >>>zremrangebyrank key start end             #删除指定排名内的升序元素
    >>>zremrangebyscore key min max              #删除指定分数范围的成员
    >>>zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]        #交集
    >>>zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]        #并集
    

    1. 映射关系为 key field-value ↩︎

    2. 列表是有序且可重复的,可以获取指定范围或指定索引下标的元素,索引由0开始 ↩︎

    3. 集合(set)不允许有重复元素,且集合是无序的,不能通过下标获取元素,支持多个集合取交集、并集和差集 ↩︎

    4. 保留了集合不能有重复成员的特性, 但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据 ↩︎

  • 相关阅读:
    在Magento中添加一个自己的支付模块----第一部分
    留言互相关注哟
    【Java】final修饰符的使用
    【java】关于Cannot refer to the non-final local variable list defined in an enclosing scope解决方法
    【Java】遍历List/Set/Map集合的一些常用方法
    Java Socket编程,小案例(有注释)
    xml解析
    阿九说:Dom4j解析XML
    神秘的Java注解
    反射是框架设计的灵魂
  • 原文地址:https://www.cnblogs.com/unsigned1995/p/11267306.html
Copyright © 2020-2023  润新知