威凡网全力打造:网页编程、软件开发编程、平面设计、服务器端开发、操作系统等在线学习平台!学编程,上威凡网!
数据库>> Mysql Sqlserver Oracle SQlite Access Sybase SQL其他
当前位置:首页 > 数据库 > SQL其他
上一节
 RedisSORT排序命令使用方法详解

 

  对于redis sort排序命令 我相信大家都不怎么了解了,因此小编整理了一些redis sort排序命令使用方法与例子,希望例子可以对各位玩家带来帮助哦.

  redis sort是由redis提供的一个排序命令。集合中的标签是无序的,可以使用sort排序。如:

  redis>sadd jihe 5

  (integer) 1

  redis>sadd jihe 1

  (integer) 1

  redis>sadd jihe 2

  (integer) 1

  redis>sadd jihe 8

  (integer) 1

  redis>sort jihe

  1) "1"

  2) "2"

  3) "5"

  4) "8"

  如果使用redis sort排序的不是数字,是字母,将他们按照字典的顺序排名,则需要使用

  sort jihe alpha

  如果不加alpha参数,则会报错,提示:(error) err one or more scores can't be converted into double。我们还可以使用关系型数据库的desc进行倒序排序和limit offset count来限定获取的条数

  sort jihe desc limit 0 2

  还可以对redis sort命令添加by参数。一条语句只能有一个by参数。这时,sort不会根据自身的值排序,比如(1,5,2,8和a,a,g,b),而是根据指定的另一个键中的字段来排序。如:

  sort tag:redis:article by article:*->time desc

  解释:根据tag:redis:article中的值(tag是redis的文章id),来组合成一个新的key就是article:(ag:redis:article中的一个值):time。获取到tag是redis的文章id列表,然后根据他们的发布时间来排序。

  redis sort命令还有个get参数,get参数类似在关系型数据库中的关联查询。比如查询tag是redis的文章id列表,将列表根据发布时间倒序排序,然后获取每个文章的标题。get可以有多个:

  sort tag:redis:article by article:*->time desc get article:*->title get article:*->time get #

  get #的意思是,将文章id返回回来,你可以写get article:*->id,也可以写get #。

  redis sort命令还有个参数是store,是将排序后的内容存储到一个新的key中。新key的类型是列表类型,如果存在则会覆盖。这个时候可以用expire来设置缓存:

  sort tag:redis:article by article:*->time desc get article:*->title get article:*->time get # store resultkey

  redis的sort命令是redis最复杂最强大的命令之一,时间复杂度是o(n+mlogm)。n是待排序的列表长度,m是返回的元素个数。减少n和m会提高sort的性能。

  补充:

  1,适合全体类型的命令

  exists key 判断一个键是否存在;存在返回 1;否则返回0;

  del key 删除某个key,或是一系列key;del key1 key2 key3 key4

  type key 返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash)

  keys pattern 返回匹配的key列表 (keys foo*:查找foo开头的keys)

  randomkey 随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串

  rename oldname newname更改key的名字,新键如果存在将被覆盖

  renamenx oldname newname 更改key的名字,如果名字存在则更改失败

  dbsize返回当前数据库的key的总数

  expire设置某个key的过期时间(秒),(expire bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。

  ttl查找某个key还有多长时间过期,返回时间秒

  select index 选择数据库

  move key dbindex 将指定键从当前数据库移到目标数据库 dbindex。成功返回 1;否则返回0(源数据库不存在key或目标数据库已存在同名key);

  flushdb 清空当前数据库中的所有键

  flushall 清空所有数据库中的所有键

  2,处理字符串的命令

  set key value 给一个键设置字符串值。set keyname datalength data (set bruce 10 paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库),data最大不可超过1g。

  get key获取某个key 的value值。如key不存在,则返回字符串”nil”;如key的值不为字符串类型,则返回一个错误。

  getset key value可以理解成获得的key的值然后set这个值,更加方便的操作 (set bruce 10 paitoubing,这个时候需要修改bruce变成1234567890并获取这个以前的数据paitoubing,getset bruce 10 1234567890)

  mget key1 key2 … keyn 一次性返回多个键的值

  setnx key value setnx与set的区别是set可以创建与更新key的value,而setnx是如果key不存在,则创建key与value数据

  mset key1 value1 key2 value2 … keyn valuen 在一次原子操作下一次性设置多个键和值

  msetnx key1 value1 key2 value2 … keyn valuen 在一次原子操作下一次性设置多个键和值(目标键不存在情况下,如果有一个以上的key已存在,则失败)

  incr key 自增键值

  incrby key integer 令键值自增指定数值

  decr key 自减键值

  decrby key integer 令键值自减指定数值

  3,处理 lists 的命令

  rpush key value 从 list 尾部添加一个元素(如序列不存在,则先创建,如已存在同名key而非序列,则返回错误)

  lpush key value 从 list 头部添加一个元素

  llen key 返回一个 list 的长度

  lrange key start end从自定的范围内返回序列的元素 (lrange testlist 0 2;返回序列testlist前0 1 2元素)

  ltrim key start end修剪某个范围之外的数据 (ltrim testlist 0 2;保留0 1 2元素,其余的删除)

  lindex key index返回某个位置的序列值(lindex testlist 0;返回序列testlist位置为0的元素)

  lset key index value更新某个位置元素的值

  lrem key count value 从 list 的头部(count正数)或尾部(count负数)删除一定数量(count)匹配value的元素,返回删除的元素数量。

  lpop key 弹出 list 的第一个元素

  rpop key 弹出 list 的最后一个元素

  rpoplpush srckey dstkey 弹出 _srckey_ 中最后一个元素并将其压入 _dstkey_头部,key不存在或序列为空则返回”nil”

  4,处理集合(sets)的命令(有索引无序序列)

  sadd key member增加元素到sets序列,如果元素(membe)不存在则添加成功 1,否则失败 0;(sadd testlist 3 n one)

  srem key member 删除sets序列的某个元素,如果元素不存在则失败0,否则成功 1(srem testlist 3 n one)

  spop key 从集合中随机弹出一个成员

  smove srckey dstkey member 把一个sets序列的某个元素移动到另外一个sets序列 (smove testlist test 3n two;从序列testlist移动元素two到 test中,testlist中将不存在two元素)

  scard key 统计某个sets的序列的元素数量

  sismember key member 获知指定成员是否存在于集合中

  sinter key1 key2 … keyn 返回 key1, key2, …, keyn 中的交集

  sinterstore dstkey key1 key2 … keyn 将 key1, key2, …, keyn 中的交集存入 dstkey

  sunion key1 key2 … keyn 返回 key1, key2, …, keyn 的并集

  sunionstore dstkey key1 key2 … keyn 将 key1, key2, …, keyn 的并集存入 dstkey

  sdiff key1 key2 … keyn 依据 key2, …, keyn 求 key1 的差集。官方例子:

  key1 = x,a,b,c

  key2 = c

  key3 = a,d

  sdiff key1,key2,key3 => x,b

  sdiffstore dstkey key1 key2 … keyn 依据 key2, …, keyn 求 key1 的差集并存入 dstkey

  smembers key 返回某个序列的所有元素

  srandmember key 随机返回某个序列的元素

  5,处理有序集合(sorted sets)的命令 (zsets)

  zadd key score member 添加指定成员到有序集合中,如果目标存在则更新score(分值,,排序用)

  zrem key member 从有序集合删除指定成员

  zincrby key increment member 如果成员存在则将其增加_increment_,否则将设置一个score为_increment_的成员

  zrange key start end 返回升序排序后的指定范围的成员

  zrevrange key start end 返回降序排序后的指定范围的成员


申明:本教程内容由威凡网编辑整理并提供IT程序员分享学习,如文中有侵权行为,请与站长联系(QQ:254677821)!
上一节
相关教程  
其他教程  
Mysql
Sqlserver
Oracle
SQlite
Access
Sybase
SQL其他

违法和不良信息举报中心】邮箱:254677821@qq.com
Copyright©威凡网 版权所有 苏ICP备2023020142号
站长QQ:254677821