Redis常用的操作命令

本篇内容主要讲解“redis常用的操作命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis常用的操作命令”吧!

创新互联不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都网站建设、成都做网站质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式成都全网营销推广需求,让再小的品牌网站制作也能产生价值!

一、key pattern 查询相应的key

(1)redis允许模糊查询key

                keys 命令   有3个通配符  *、?、[]  和一个转义

                            ?    匹配一个字符
                            *    匹配任意个(包括0个)字符
                            []    匹配括号间的任一个字符,可以使用 "-" 符号表示一个范围,如 a[b-d] 可以匹配 "ab","ac","ad"
                            \x    匹配字符x,用于转义符号,如果要匹配 "?" 就需要使用 \?

(2)randomkey:返回随机key

(3)type key:返回key存储的类型

                            返回值可能是 string(字符串类型) 、hash(散列类型) 、list(列表类型)、 set(集合类型)、 zset(有序集合类型)

(4)exists key:判断某个key是否存在 【如果存在,返回整数类型 1 ,否则返回 0】

(5)del key:删除key

                            del key [key.....]
                            可以删除一个或多个键,返回值是删除的键的个数
                            注意:不支持通配符删除

(6)rename key newkey:改名

(7)renamenx key newkey:如果newkey不存在则修改成功

(8)move key 1:将key移动到1数据库

(9)ttl key:查询key的生命周期(秒)

(10)expire key 整数值:设置key的生命周期以秒为单位

(11)pexpire key 整数值:设置key的生命周期以毫秒为单位

(12)pttl key:查询key 的生命周期(毫秒)

(13)perisist key:把指定key设置为永久有效

二、字符串类型的操作

(1)set key value [ex 秒数] [px 毫秒数] [nx/xx]

如果ex和px同时写,则以后面的有效期为准

nx:如果key不存在则建立

xx:如果key存在则修改其值

(2)get key:取值

(3)mset key1 value1 key2 value2 一次设置多个值

(4)mget key1 key2 :一次获取多个值

(5)setrange key offset value:把字符串的offset偏移字节改成value

       如果偏移量 > 字符串长度,该字符自动补0x00

(6)append key value :把value追加到key 的原值上,向尾部追加值
                        作用是向键值的末尾追加 value ,如果键不存在则将改键的值设置为 value,即相当于 set key value。

                        返回值是追加后字符串的长度        如:append foo " hello word!"

(7)getrange key start stop:获取字符串中[start, stop]范围的值

       对于字符串的下标,左数从0开始,右数从-1开始

       注意:当start>length,则返回空字符串

          当stop>=length,则截取至字符串尾

          如果start所处位置在stop右边,则返回空字符串

(8)getset key nrevalue:获取并返回旧值,在设置新值

(9)incr key:自增,返回新值,如果incr一个不是int的value则返回错误,incr一个不存在的key,则设置key为1

                        incr key 当存储的字符串是整数形式时,redis提供了一个使用的命令 incr 作用是让当前的键值递增,

                        并返回递增后的值
                        incr num 当要操作的键不存在时会默认键值为 0  ,所以第一次递增后的结果是 1 ,

                        当键值不是整数时 redis会提示错误

(10)incrby key increment:  增加指定的整数【 incrby key 2:跳2自增】

                        incrby 命令与 incr 命令基本一样,只不过前者可以通过 increment 参数指定一次增加的数值

                        如:incrby num 2        incrby num 3

(11)incrbyfloat by 0.7: 自增浮点数 注意: ( 受reids 版本限制,版本需要大于 2.6 版本)

       (12)减少指定的整数
                        decr key
                        decrby key increment
                        desc 命令与incr 命令用法相同,只不过是让键值递减
                        decrby 命令与 incrby命令用法相同

         位操作 : 一个字节由8个二进制位组成,redis 提供了4个命令直接对二进制位进行操作

(13)setbit key offset value:设置offset对应二进制上的值,返回该位上的旧值

     【注意:如果offset过大,则会在中间填充0

         offset最大到多少?    2^32-1,即可推出最大的字符串为512M】

                        setbit 命令可以设置字符串类型键指定位置的二进制位的值,返回值是该位置的旧值,

                        如果需要设置的位置超过了键值的二进制位的长度,setbit 命令会自动将中间的二进制位设置为0,

                        同理设置一个不存在的键的指定二进制位的值会自动将其前面的位赋值为 0

(14)getbit key offset value:

                         getbit 命令可以获得一个字符串类型键指定位置的二进制位的值(0 或 1),索引从 0 开始,

                        如果需要获取的二进制位的索引超出了键值的二进制位的实际长度则默认位值是 0

        (15)bitcount key [strart] [end]

                        bitcount 命令可以获得字符串类型键中值是1的二进制位个数,可以通过参数来限制统计的字节范围,

                        如我们希望统计前两个字节(即"aa")  命令:bitcount foo 0 1   

                        注意: ( 受reids 版本限制,版本需要大于 2.6 版本)

        (16)bitop operation destkey key1 [key2..]    对key1 key2做opecation并将结果保存在destkey上

                                                                                【opecation可以是AND OR NOT XOR】

                         bittop 命令可以对多个字符串类型键进行位运算,并将结果存储在destkey参数指定的键中。

                         该命令支持的运算操作有 AND、 OR、  XOR、 NOT,

                           例如我们对bar 和 aar 进行 OR 运算操作:
                            set foo1 bar
                            set foo2 aar
                            bitop OR res foo1 foo2
                            get res            
                           注: ( 受reids 版本限制,版本需要大于 2.6 版本)

(17)strlen key:取指定key的value值的长度【返回键值的长度,如果键不存在则返回0】

  (18)setex key time value:设置key对应的值value,并设置有效期为time秒 

三、链表操作

Redis的list类型其实就是一个每个子元素都是string类型的双向链表,链表的最大长度是2^32。list既可以用做栈,也可以用做队列。

list的pop操作还有阻塞版本,主要是为了避免轮询

      (1) 向列表两端增加元素
                lpush key value [ value ....... ]
                rpush key value [ value ....... ]
                lpush 命令用来向列表左边增加元素,返回表示增加元素后列表的长度
                rpush 命令用来向列表右边增加元素,返回表示增加元素后列表的长度
        
      (2)从列表两端弹出元素
                lpop key
                rpop key
                lpop 命令可以从列表左边弹出一个元素,lpop 命令执行两步操作,

                    1:将列表左边的元素从列表中移除,

                    2:返回被移除元素值
                rpop 命令可以从列表右边弹出一个元素
       (3)llen key:计算链表的元素个数  【当键不存在时,llen 返回 0】
       (4)lrange key start stop:返回链表中[start, stop]中的元素 
                    获得列表中的某一片段,返回索引从 start 到 stop 之间的所有元素(包括两端的元素) 索引开始为 0
                    注:lrange 与很多语言中用来截取数组片段的方法有一点区别是 lrange 返回的值包含最右边的元素
                    lrange 命令也支持负索引,表是从右边开始计算序数,

                        如 ' -1 ' 表示最右边第一个元素, ' -2 ' 表示最右边第二个元素,一次类推
 

(5)lrem key count value:从链表中删除value值,删除count的绝对值个value后结束

     count > 0 从表头删除  count < 0 从表尾删除  count=0 全部删除

  
                    lrem 命令会删除列表中前 count 个值为 value 的元素,返回值是实际删除的元素个数。

                    根据count 值的不同,lrem 命令执行的方式会略有差异
                        当 count > 0 时,lrem 命令会从列表左边开始删除前 count 个值为 value 的元素
                        当 count < 0 时,lrem 命令会从列表右边开始删除前count 个值为 value 的元素
                        当 count = 0 时,lrem 命令会删除所有值为value的元素
 

(6)lindex key index:返回index索引上的值

                    lindex 命令用来返回指定索引的元素,索引从 0 开始 ,如果 index 是负数则表示从右边开始计算的索引,

                    最右边元素的索引是 -1        
        (7)lset key index value:设置index索引上的值
                    lset 是通过索引操作列表的命令,它会将索引为 index 的元素赋值为 value
 

(8)ltrim key start stop:只保留列表指定片段,剪切key对应的链接,切[start, stop]一段并把该值重新赋给key,
                    ltrim 命令可以删除指定索引范围之外的所有元素,其指定列表范围的方法和 lrange 命令相同
                    ltrim 命令常和 lpush 命令一起使用来限制列表中元素的数量,

                        比如记录日志时我们希望只保留最近的 100 条日志,则每次加入新元素时调用一次ltrim 命令即可;

(9)linsert key after | before search value:向列表中插入元素,

                    在key 链表中寻找search,并在search值之前|之后插入value
                    linsert 命令首先会在列表中从左到右查找值为 search 的元素,

                  然后根据第二个参数是 before 还是 after 来决定将 value 插入到该元素的前面还是后面,如果命令执行成功,

                  返回插入操作完成之后列表的长度。如果没有找到 search 返回 -1 如果key 不存在或为空,返回 0

(10)rpoplpush source destination:将元素从一个列表转到另一个列表R

                    把source 的末尾拿出,放到destination头部,并返回单元值

应用场景: task + bak 双链表完成安全队列

Redis常用的操作命令

业务逻辑: rpoplpush task bak

接收返回值并做业务处理

如果成功则rpop bak清除任务,如果不成功,下次从bak表取任务

 

               rpoplpush 先执行 rpop 命令再执行 lpush 命令。rpoplpush 命令先会从source 列表类型键的右边弹出一个元素,

                然后将其加入到 destination 列表类型键的左边,并返回这个元素的值,整个过程是原子的

(11)brpop,blpop key timeout:等待弹出key的尾/头元素

     timeout为等待超时时间,如果timeout为0则一直等待下去

应用场景:长轮询ajax,在线聊天时能用到

四、hashes类型及操作

Redis hash 是一个string类型的field和value的映射表,它的添加、删除操作都是O(1)(平均)。hash特别适用于存储对象,将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象。

配置: hash_max_zipmap_entries 64 #配置字段最多64个

hash_max_zipmap_value 512 #配置value最大为512字节

(1)hset key field value   用来给字段赋值

                【hset myhash field value:设置myhash的field为value】

                    hset 命令的方便之处在于不区分插入和更新操作,这意味着修改数据时不用事先判断字段是否存

                    在来决定要执行的是插入操作还是更新操作,当执行的是插入操作时, hset 命令返回 1 ,

                    当执行的是更新操作时,hset 命令返回的是 0,当键本身不存在时, hset 命令还会自动建立他

(2)hmset key field value [ field value ...... ] 设置多个键值 

               【hmset myhash field1 value1 field2 value2:同时设置多个field】

(3)hget key field  命令用来获得字段的值

                【hget myhash field:获取指定的hash field】

(4)hmget key field [ field ...... ] 获得多个键值 

                【hmget myhash field1 field2:一次获取多个field】

(5)hgetall key :获取键中所有字段和字段值却不知道键中有哪些字段时使用,返回的结果是字段和字段值组成的列表

                【hgetall myhash:获取某个hash中全部的field及value】 

(6)hsetnx key field value:当字段不存在时赋值

                【hsetnx myhash field value:不存在的情况下设置myhash的field为value】

                hsetnx 命令与hset 命令类似,区别在于如果字段已经存在,hsetnx 命令将不执行任何操作

        (7)hexists key field 判断字段是否存在【存在返回 1 ,否则返回 0】

                【hexists myhash field:测试指定的field是否存在】

    

(8)hincrby key field increment   使字段值增加指定的整数
                 【hincrby myhash field 5:指定的hash field加上给定的值】

(9)hlen key 获得字段数量  【hlen myhash:返回hash的field数量】

(10)hdel key field [ field .....]   删除一个或多个字段,返回值是被删除的字段个数

                【hdel myhash field:删除指定的field】

(11)hkeys key 获取所有字段的名字  【 hkeys myhash:返回hash所有的field】

(12)hvals key 获得键中所有字段的值  【hvals myhash:返回hash所有的value】


 

五、集合结构操作

特点:无序性、确定性、唯一性

       (1)sadd key member [ member .... ]  :往集合里面添加元素

                 sadd 命令用来向集合中增加一个或多个元素,如果键不存在则会自动创建。

                因为在一个集合中不能有相同的元素,所以如果要加入的元素已经存在与集合中就会忽略这个元素。

                返回值是成功加入的元素数量(忽略的元素不计算在内)

       (2)srem key member [ member .... ] :删除集合某个元素  
                 srem 命令用来从集合中删除一个或多个元素,并返回删除成功的个数

(3)smembers key:获取集合所有的元素

(4)spop key:返回并删除集合中1个随机元素(可以做抽奖,不会重复抽到某人) 

         由于集合类型的元素是无序的,所以 spop 命令会从集合中随机选择一个元素弹出,

                返回值为被移除的随机元素,如果 key 不存在或者key 为空集时,返回 nil

(5)sismember key value:判断集合是否有某个值

                判断一个元素是否在集合中,是一个时间复杂度为 0(1) 的操作,

                无论集合中有多少个元素,sismember 命令始终可以极快的返回结果。

                当值存在时 sismember 命令返回 1 ,当值不存在或者键不存在时返回 0

(6)scard key:返回集合元素的个数

(7)smove source dest value:把source的value移动到dest集合中

(8)srandmember key [ count ]        随机获得集合中的元素
                  该命令用来随机从集合中获取一个元素
                  还可以传递 count 参数来一次随机获得多个元素,根据 count 的正负不同,具体表现也不同
                  当count为正数时,srandmember 会随机获取从集合里获得count个不重复的元素。

                  如果count的值大于集合中的元素个数,则srandmember 会返回集合中的全部元素
                  当count为负数时,srandmember 会随机从集合中获得count个的元素,这些元素有可能相同
                    【注:当传递count 参数时,在windows环境下提示命令参数错误】

    集合间运算
(9) sdiff key [ key ...... ]  【sdiff key1 key2:求key1 key2的差集】
                    sdiff 命令用来对多个集合执行差集运算。集合 A 与集合 B 的差集表示为 A- B ,

                    代表所有属于 A 且不属于 B 的元素构成的集合,即 A - B = { x| x∈A  且 x ∈/B }
            
                    命令使用方法:
                            sadd seta 1 2 3 4 6 7 8
                            sadd setb 2 3 4
                            sdiff seta setb
                    该命令支持同时传入多个键, 计算顺序是先计算 seta 和 setb 在计算结果与 setc 的差集
                            sadd setc 2 3 4
                            sdiff seta setb setc
        
(10)sinter key [ key ..... ]  【sinter key1 key2 key3:求key1 key2 key3的交集】
                    该命令用来对多个集合执行交集运算。集合 A 与集合 B 的交集表示为 A∩B,

                    代表所有属于 A 且属于 B 的元素构成的集合即 A∩B = { x| x∈A  且 x ∈B }
            
                    命令使用方法:
                            sinter seta setb
                    该命令同样支持同时传入多个键
 
(11)sunion key [ key ...... ]【sunion key1 key2:求key1 key2 的并集】
                    该命令用来对多个集合执行并集运算。集合 A 与集合 B的并集表示为 A∪B ,

                    代表所有属于A或所有属于B的元素构成的集合即  A∪B = { x| x∈A  或 x ∈B }
            
                    命令使用方法:
                            sunion seta setb
                    该命令同样支持同时传入多个键

        进行集合运算并将结果存储
        (12)sdiffstore destination key [ key ...... ]

                    sdiffstore 命令和 sdiff 命令功能一样,唯一的区别就是前者不会直接返回运算的结果,

                    而是将结果存在 destination 键中

        (13) sinterstore destination key [ key ...... ]  【sinterstore res key1 key2:求key1 key2的交集并存在res里 】

                    sinterstore 这个命令类似于 sinter 命令,

                    但它将结果保存到 destination 集合,而不是简单地返回结果集

        (14)sunionstore destination key [ key ...... ]
                    sunionstore 这个命令类似于 sunion 命令,

                    但它将结果保存到 destination 集合,而不是简单地返回结果集。

六、有序集合

概念:它是在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动按新的值调整顺序。可以理解为有两列的MySQL表,一列存储value,一列存储顺序,操作中key理解为zset的名字。

和set一样sorted,sets也是string类型元素的集合,不同的是每个元素都会关联一个double型的score。sorted set的实现是skip list和hash table的混合体。

当元素被添加到集合中时,一个元素到score的映射被添加到hash table中,所以给定一个元素获取score的开销是O(1)。另一个score到元素的映射被添加的skip list,并按照score排序,所以就可以有序地获取集合中的元素。添加、删除操作开销都是O(logN)和skip list的开销一致,redis的skip list 实现是双向链表,这样就可以逆序从尾部去元素。sorted set最经常使用方式应该就是作为索引来使用,我们可以把要排序的字段作为score存储,对象的ID当元素存储。

(1)zadd key score member [ score member ...... ]:添加元素

                zadd 命令用来向有序集合中加入一个元素和该元素的分数,

                如果该元素已经存在,则会用新的分数替换原有的分数。zadd命令的返回值是新加入到集合中的元素个数

                (不包含之前已经存在的元素)

        获得排名在某个范围的元素列表

(2) zrange key start stop [withscore]:把集合排序后,返回名次[start,stop]的元素 

                        默认是升续排列  withscores 是把score也打印出来
                        zrange 命令会按照元素分数从小到大的顺序返回索引从 start 到 stop 之间的所有元素

                        (包含两端的元素)。zrange 命令和 lrange 命令十分相似,如索引都是从0开始,

                        负数代表从后向前查找(-1 表示最后一个元素)。

                        如果需要同时获得元素的分数的话,可以在zrange 命令的尾部加上 widthscores 参数。
                        注:如果两个元素的分数相同,redis会按照字典顺序(即 0<9

                        如果元素的值是中文,则取决于,中文的编码方式,

         (3)zrevrange key start stop [ withscores ]

                        zrevrange 命令和 zrange 的唯一不同在于 zrevrange 是按照元素分数从大到小的顺序给定结果的

        获得元素的排名
         (4) zrank key member:查询member的排名(升序0名开始)

         (5) zrevrank key member:查询member排名(降序 0名开始)

                    zrank 命令会按照元素分数从小到大的顺序获得指定的元素排名(从 0 开始,即分数最小的元素排名为0)
                    zrebrank 命令则正好相反,分数最大的元素排名为0

        (3)zscore key member:获得元素的分数       

(4)zrangebyscore key min max [ withscores ] [ limit offset count ]:获得指定分数范围内的元素

                 【zrangebyscore key min max [withscores] limit offset N:

                                    集合(升序)排序后取score在[min, max]内的元素,并跳过offset个,取出N个】

                    该命令按照元素分数从小到大的顺序返回分数在 min 到 max 之间(包含 min 和max 的元素)
                    如果希望分数范围不包含端点值,可以在分数前加上 "(" 符号,

                    例如:希望返回80分到100分的的数据,可以包含80分单不包含100分
                    命令:zrangebyscore scoreboard 80 (100 widthscores min 和 max 还支持无穷大,

                                同 zadd 命令一样,-inf 和 +inf 分别表示负无穷大和正无穷大。

                                比如希望得到所有分数高于 80分(不包含80分)的人的名单,但是却不知道最高分是多少,

                                这是就可以使用 +inf zrangebyscore scoreboard (80 +inf 命令 limit offset count

                                与 SQL 中的用法基本相同,即在获得的元素列表的基础上向后偏移 offset 个元素

                                并且只获取前count个元素 zrevrangebyscore 不仅是按照元素分数从大往小的顺序给出结果,

                                而且他的 min 和max 的参数的顺序和 zrangebyscore 命令是相反的

       
         (5)zincrby key increment member:增加某个元素的分数

                  zincrby 命令可以增加一个元素的分数,返回值是更改后的分数, 例如想给peter 加 4 分 ,

                  zincrby scoreborder 4 peter,  increment  也可以是负数表示减分, zincrby scoreborder -4 peter
                  如果指定元素不存在,redis 在执行命令前会先建立它并将他的值赋为0在执行操作    

       删除元素

  (6)zrem key value1 value2:删除集合中的元素,删除一个或多个元素

                   zrem 命令的返回值是成功删除的元素数量(不包含本来就不存在的元素)

         (7)zremrangebyrank key start end:按排名范围删除元素,删除名次在[start, end]之间的

                 按照元素分数从小到大的顺序(即索引 0 表示最小的值)删除在指定排名范围内的所有元素,

                 并返回删除元素的数量     

         (8)zremrangebyscore key min max:按照score来删除元素,删除score在[min, max]之间

                    zremrangebyscore 命令删除指定分数范围内的所有元素,

                    参数 min 和 max 的特性和 zrangebyscore 命令中的一样,返回值是删除元素的个数  

  (9)zcard key:返回集合元素的个数

   (10)zcount key min max:返回[min, max]区间内元素数量

                    zcount 命令的 min max 参数的特性与 zrangebyscore 命令中的一样  

       计算有序集合的交集
         (11)zinterstore destination numkeys key [ key ... ] [ weights weight [ weight ... ] ] [ aggregate SUM | MIN | MAX ]

                    zinterstore 命令用来计算多个有序集合的交集并将结果存储在 destination 键中(同样以有序集合类型存储),

                    返回值为 destination 键中元素的个数,destination 键中元素的分数是由 aggregate 参数决定的
                  【zinterstore dest numkeys key1[key2..] [WEIGHTS weight1 [weight2...]] [AGGREGATE   SUM | MIN | MAX]

求key1,key2的交集,key1,key2的权值分别是weight1,weight2

聚合方法用 sum | min | max

聚合结果 保存子dest集合内

                    】
                1. 当 aggregate 是 SUM (也就是默认值),destination 键中元素的分数是每个参与计算的集合中该元素分数的和
                
                2.当 aggregate 是 MIN 时,destination 键中元素的分数是参与计算的集合中该元素分数最小值
                
                3.当 aggregate 是 MAX 是,destination 键中元素的分数是参与计算的集合中该元素分数最大值

                    zinterstore 命令还能通过 weights 参数设置每个集合的权重,

                    每个集合在参与计算时元素的分数会被乘上该集合的权重

注意:weights,aggregate如何理解?

  答:如果有交集,交集元素又有score,score怎么处理?aggregate num->score相加,

                        min最小score,max最大score,另外可以通过weights设置不同的key的权重,交集时  score*weight

       
          (12) zunionstore 计算多个有序集合的并集并将结果存储在 destination 键中,用法与 zinterstore 命令的用法一样

七、事务

                事务的原理是先将属于一个事务的命令发送给redis ,然后再让 redis 依次执行这些命令
                   
                错误处理
                    (1)语法错误。语法错误指命令不存在或者命令参数个数不对。

                              这种情况下,事务中只要有一个命令有语法错误,执行exec命令后redis就会直接返回错误,

                              连语法正确的命令也不会执行。注:redis 2.6.5 之前的版本会忽略有语法错误的命令,

                              然后执行事务中其他语法正确的命令。
                    (2)运行错误。运行错误指在命令执行时出现的错误。

                              比如使用散列类型的命令操作集合类型的键,这种错误在实际执行之前redis是无法发现的,

                              所以在事务里这样的命令是会被redis接受并执行的,如果事务里的一条命令出现运行错误,

                              事务里其他的命令依然会继续执行(包含出错命令之后的命令)
 
                reids的事务没有关系数据库事务提供的回滚功能,为此开发者必须在事务执行出错之后自己收拾剩下的摊子
        
  (1) watch 命令
                        watch key [ key ... ]
                        监视一个或多个 key ,如果在事务执行之前这个或这些 key 被其他命令所改动,

                        那么事务将被打断,监控一直持续到exec命令
        
  (2) unwatch:取消 watch 命令对所有 key 的监视
    
  (3)生存时间
           expire key seconds  :其中 seconds 参数表示键的生存时间,单位是秒,该参数必须是整数       
                        命令返回 1表示设置成功,返回 0 则表示键不存在或设置失败
                        如果想知道一个键还有多久会被删除,可以使用 ttl 命令。返回值是键的剩余时间(单位是秒),       
                        如果想取消键的生存时间设置(即将键恢复成为永久的),可以使用 persist 命令。

                        如果生存时间被成功清除则返回 1 。否则返回 0
               
            除了 persist 命令之外,使用 set 、getset 命令为键赋值也同时会清楚键的生存时间
            注: incr 、lpush、hset、zrem 命令均不会影像键的生存时间
 
                精确控制键的生存时间应该使用 pexpire 命令。该命令的单位是毫秒
                可以使用 pttl 命令以毫秒为单位返回键的剩余时间
                另外不太常用命令:expireat 和 pexpireat,该命令第二个参数表示键的生存时间的截至时间,

                expireat 单位秒 pexpireat 单位毫秒
  

  (4)sort:该命令可以对列表类型,集合类型,和有序集合类型键进行排序
                    列表类型,有序集合类型排序时,会忽略元素的分数,只针对元素的自身的值进行排序           
                    除了可以排列数字外,sort 命令还可以通过 alpha 参数实现按照字典顺序排列非数字元素
     
             sort 命令的 desc 参数可以实现将元素按照从大到小的顺序排列
             sort 命令还支持 limit 参数来返回指定范围的结果,用法和sql 语句一样 limit offset count ,

                    表示跳过前 offset 个元素并获取之后的 count 个元素
      
            sort 命令 by 参数,默认情况下, sort uid 直接按照 uid 中的值排序,通过 by 参数,

                    可以让 uid 按照其他键的元素来排序
        
             user_level_* 是一个占位符,他先取出 uid 中的值,然后在用这个值来查找相应的键
                    比如在对 uid 列表进行排序时, 程序就会先取出 uid 的值 1 、 2 、 3 、 4 ,

                    然后使用 user_level_1 、 user_level_2 、 user_level_3 和   user_level_4 的值作为排序 uid 的权重。
 
            使用 get 选项,可以根据排序的结果来取出相应的键值 

                    一个sort 命令中可以有多个 get 参数(而 by 参数只能有一个)       
 
             默认情况下 sort 命令会直接返回排序结果,如果希望保存排序结果,可以使用 store 参数,保存后键的类型为列表类型

八、服务器相关命令

(1)ping:测定连接是否存活

(2)echo:在命令行打印一些内容

(3)select:选择数据库

(4)quit:退出连接

(5)dbsize:返回当前数据库中key的数目

(6)info:获取服务器的信息和统计

(7)monitor:实时转储收到的请求

(8)config get 配置项:获取服务器配置的信息

config set 配置项  值:设置配置项信息

(9)flushdb:删除当前选择数据库中所有的key

(10)flushall:删除所有数据库中的所有的key

(11)time:显示服务器时间,时间戳(秒),微秒数

(12)bgrewriteaof:后台保存rdb快照

(13)bgsave:后台保存rdb快照

(14)save:保存rdb快照

(15)lastsave:上次保存时间

(16)shutdown [save/nosave]

注意:如果不小心运行了flushall,立即shutdown nosave,关闭服务器,然后手工编辑aof文件,去掉文件中的flushall相关行,然后开启服务器,就可以倒回原来是数据。如果flushall之后,系统恰好bgwriteaof了,那么aof就清空了,数据丢失。

(17)showlog:显示慢查询

问:多慢才叫慢?

答:由slowlog-log-slower-than 10000,来指定(单位为微秒)

问:服务器存储多少条慢查询记录

答:由slowlog-max-len 128,来做限制     

到此,相信大家对“Redis常用的操作命令”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


本文名称:Redis常用的操作命令
分享地址:http://pwwzsj.com/article/psoooo.html