redis数据类型常用函数操作

redis常用五大数据类型是string、list、set、zset、hash redis提供的函数很多,可以在这个网页查看全部函数http://redisdoc.com,我们平常用的多的其实不多,下面介绍各个类型常用到的函数。

首先select是选择哪个库的,redis库从0开始,默认是0,例如:select 1就是选择第二个库。

dbsize是查看库里面有多少个key。

然后介绍下key的常用函数:

  1. keys * 查询所有key
  2. exists key 判断某个key是否存在
  3. move key db 将key移到哪个库
  4. expire key 秒:给key设定过期时间
  5. ttl key 查看key还有多少秒过期,-1表示永不过期,-2表示已过期
  6. type key 查看key是什么类型的

一、string(字符串)

  1. set 添加

  2. get 查看

  3. del 删除key

  4. append 追加值

  5. strlen 获取字符串的长度

  6. setnx key value 添加key,如果这个key不存在才成功

  7. setex key time value 设置key的值的 同时,设置过期时间

  8. incr 自增1,incrby num 自增多少(值必须是数字)

  9. decr 自减,decrby num 自减多少(值必须是数字)

  10. getrange key start end 获取范围的值,end为-1表示最后

    1. 例:key的值为abc123;getrange key 0 -1,获取到的是abc123;getrange key 0 2,获取到的是abc
  11. Setrange key start value 设置范围的值,start从哪里开始,设置后会覆盖start位置开始的值

    1. 例:key的值为abc123;setrange key 0 xyz ,则值变为xyz123
  12. mset/mget/msetnx 前面的m是more的缩写,表示可以多个key一起设置,功能和上面的一样。注意:多个key设置有原子性,要么全部成功要么全部失败。

二、list(列表)

  1. lpush key value [value...] 创建key,并向列表的左边插入n个值,顺序是从左至右,这个跟“栈”有点像,先进后出。
    1. 例:lpush key 1 2 3 4,那么lrange取出的时候就是4 3 2 1。
    2. 能理解 ? 第一次放进去是1,第二次是2,那么这时候list里面就是21这样摆放的,第三次是321,第四次是4321.
  2. rpush key value [value...]创建key,并向列表的右边插入n个值,顺序是从右至左
    1. 例:rpush key 1 2 3 4,那么lrange取出的时候就是1 2 3 4
  3. lrange key start stop 从列表左边取出值,-1表示末尾
  4. lpop/rpop lpop 从左边提出元素,rpop从右边提出元素
    1. lpush key 1 2 3 4后,list里是4321,lpop key后把4踢出去了,list里面就剩321了;而如果是rpop key,list里面就是432
  5. lindex key index 取出key中index下标的值
  6. llen key获取list长度
  7. lrem key count value 删除list中count个value。 8. ltrim key start stop 截取list中start 到 stop 范围的值,然后再赋给list 9. rpoplpush source(源列表) destination(目的列表) 从源列表的右边踢出最后一个元素,往目的列表的左边插入元素
  8. lset key index value 给list中index位置的值设为value
  9. linsert key before/after value1 value2 在list中value1的值前面或后面插入value2
    1. 例:list中是1234;linsert key before 2 x;那么现在list就变为1x234

List它是一个字符串链表,left、right都可以插入添加。

链表的操作无论是头和尾效率都极高,但加入是对中间的元素操作,那么效率就不太好。

三、set(集合)

set里面是元素不能重复

  1. sadd key member [member...] 添加set和元素
  2. smembers key 查看set里面的元素
  3. sismember key member 判断set里member是否存在
  4. scard key 获取set里面的元素个数
  5. srem key member 删除set里的member元素
  6. srandmember key count 随机取出set中count个元素
  7. spop key 随机找出一个元素出栈
  8. smove source(源集合) destination(目的集合) member 将源集合汇总的member 放到目的集合中
  9. sdiff key [key...] 取两个集合的差集
  10. sinter key [key...] 取2个集合的交集。交集的英文是 intersection
  11. sunion key [key...] 取2个集合的并集

四、zset(有序集合)

和set一样,里面是元素不能重复,并且它多了一个score的值,用来排序的

  1. zadd key score member [score member ...] 添加zset和元素,注意和set不同的是这里多了个score
  2. zrange key start stop [withscores] 取出zset中start到stop的元素,加上withscores[可选]会列出score
  3. zrangebyscore key min max [withscores] [limit offset count] 按照分数min到max列出zset元素,加withscores[可选]会列出score,加limit 限制条数,和mysql中的limit一样。不包含使用(。
    1. 例如:zset中的元素ztest是v1 10,v2 20 ,v3 30 ,zrangebyscore ztest (20 30。"("表示不包含,那这里是20<x<=30,结果是20,如果30也加上(,就变成了20<x<30。那么结果为空。
  4. zrem key member 删除set里的member元素
  5. zcard key 获取zset里面的元素个数
  6. zrank key member 获取zset中member的下标
  7. zscore key member 获取zset中member的score
  8. zrevrank key member “逆序”获取zset中member的下标,这里的下标是从后面开始算的,原来最后一位的下标变为0.
  9. zrevrange key start stop [withscores] 和zrange相反,它从后面获取zset的元素
  10. zrevrangebyscore key min max [withscores] [limit offset count] 和zrangebyscore相反,它从后面获取zset的元素

五、hash(哈希)

  1. hset key field value 添加一个hash,key里面是由key:value组成
  2. hget key field 获取hash中field的值
  3. hmset / hmget 批量添加和查询
  4. sdel key field [field...] 删除hash中的一个或多个field
  5. hlen key获取hash的长度
  6. hexist key field 判断hash中field是否存在
  7. hkeys key 列出hash中的所有field
  8. hvals key 列出hash中所有的值
  9. hincrby key field increment 给hash中field的值加increment
  10. hincrbyfloat key field increment 给hash中field的值加increment,其中increment是float
  11. hsetnx key feild value 和setnx一样,如果field 不存在,才能添加成功

林明潭blog
请先登录后发表评论
  • latest comments
  • 总共0条评论