redis五中数据类型操作

  1. string类型

  • set/get 最常见也是最简单的操作.key value 键值对;
    1. 192.168.159.130:7000> set num 1  
    2. OK  
    3. 192.168.159.130:7000> get num  
    4. "1"  
    5. 192.168.159.130:7000> get age  
    6. (nil)  

  • setnx 同set 区别在于 如果key值存在,不覆盖返回0, 如果key值不存在,设置值.并且返回1(nx not exist)
    1. 192.168.159.130:7000> setnx num 1  
    2. (integer) 0  
    3. 192.168.159.130:7000> get num   
    4. "1"  
    5. 192.168.159.130:7000> setnx age 1  
    6. (integer) 1  
    7. 192.168.159.130:7000> get age  
    8. "1"  

  • setex 同set 区别在于可以给数据加一个失效时间. set key 时间  value
    1. 192.168.159.130:7000> setex num 5 1  
    2. OK  
    3. 192.168.159.130:7000> get num  
    4. "1"  
    5. 192.168.159.130:7000> get num  
    6. "1"  
    7. 192.168.159.130:7000> get num  
    8. (nil)  

  • setrange 同set  可以替换value值   setrange key  要替换的开始索引  替换的值   替换的长度取决于替换值的长度.长度不够,原值补充
    1. 192.168.159.130:7001> set name helloworld  
    2. OK  
    3. 192.168.159.130:7001> SETRANGE name 1 t  
    4. (integer) 10  
    5. 192.168.159.130:7001> get name  
    6. "htlloworld"  
    7. 192.168.159.130:7001> setrange name 0 helloworld  
    8. (integer) 10  
    9. 192.168.159.130:7001> get name  
    10. "helloworld"  

  • mset 同set 一次设置多个值(特点要么全部成功,要不全部失败)  set key1 value1 key2 value2 ... 这里不做演示(因为我的环境是redis集群,设置多个值的时候,redis有可能会报CROSSSLOT Keys in request don't hash to the same slot 异常.原因请看下一篇关于redis的文章)
  • getset 同set 只不过会返回key的原值  没有返回nil
    1. 192.168.159.130:7000> getset age 1  
    2. "2"  
    3. 192.168.159.130:7000> getset age 2  
    4. "1"  
    5. 192.168.159.130:7000> getset take 2  
    6. (nil)  
    7. 192.168.159.130:7000> getset take 1  
    8. "2"  

  • getrange 获取值的一部分 getrange key 开始索引 结束索引
    1. 192.168.159.130:7001> GETRANGE name 0  
    2. (error) ERR wrong number of arguments for 'getrange' command  
    3. 192.168.159.130:7001> GETRANGE name 0 4  
    4. "hello"  
    5. 192.168.159.130:7001> GETRANGE name 0 18  
    6. "helloworld"  

  • mget 同 get 特点是一次后去多个 key 锁对应的值. mget key1 key2 ... 这里不做演示.原因同mset
  • incr 增加对应key 的value值  incr key  返回增加后的value值
    1. 192.168.159.130:7001> get name  
    2. "helloworld"  
    3. 192.168.159.130:7001> INCR name  
    4. (error) ERR value is not an integer or out of range  
    5. 192.168.159.130:7001> set name 1  
    6. OK  
    7. 192.168.159.130:7001> INCR name   
    8. (integer) 2  

  • incrby 同incr 特点是可以根据你给定的值 增加key对应的value值.如果key值不存在直接设置key值(incr 也相同)
    1. 192.168.159.130:7003> get student  
    2. (nil)  
    3. 192.168.159.130:7001> INCRBY student 10  
    4. (integer) 10  
    5. 192.168.159.130:7001> get student   
    6. "10"  
    7. 192.168.159.130:7001> INCRBY student 2  
    8. (integer) 12  

  • decr 和decrby 这里不做介绍.同incr
  • append 相当于java中的 stringbuffer 里的append方法 .向后追加字符串
    1. 192.168.159.130:7001> set name aa  
    2. OK  
    3. 192.168.159.130:7001> get name  
    4. "aa"  
    5. 192.168.159.130:7001> APPEND name bb  
    6. (integer) 4  
    7. 192.168.159.130:7001> get name   
    8. "aabb"  

  • strlen  获取对象key的value值长度
    1. 192.168.159.130:7001> get name   
    2. "aabb"  
    3. 192.168.159.130:7001> strlen name  
    4. (integer) 4  
    5. 192.168.159.130:7001> set name 1  
    6. OK  
    7. 192.168.159.130:7001> STRLEN name  
    8. (integer)   

    2.HASH字典类型

  • hset  key field value(设置或者新增对象的一个属性),hget key field (获取对象的单个属性值),hsetnx(同string类型的setnx 设置属性值 如果有值则不执行)
    1. 192.168.159.130:7000> hset person age 10  
    2. (integer) 1  
    3. 192.168.159.130:7000> hget person age  
    4. "10"  
    5. 192.168.159.130:7000> hsetnx person age 5  
    6. (integer) 0  
    7. 192.168.159.130:7000> hsetnx person sex 1  
    8. (integer) 1  
    9. 192.168.159.130:7000> hget person sex  
    10. "1"  

  • hmset key field1 value1 field2 value2...(批量设置对象属性),hmget key field1 field2..(批量获取对象属性值),hgetall key(获取对象所有的属性以及属性值)
    1. 192.168.159.130:7001> hmset person name xiaoming age 5 sex 1  
    2. OK  
    3. 192.168.159.130:7000> hmget person name age sex  
    4. 1) "xiaoming"  
    5. 2) "5"  
    6. 3) "1"  
    7. 192.168.159.130:7000> hgetall person  
    8. 1) "name"  
    9. 2) "xiaoming"  
    10. 3) "age"  
    11. 4) "5"  
    12. 5) "sex"  
    13. 6) "1"  

  • hexists key field(判断是否属性是否存在),hlen key(返回对象属性条数),hdel key field( 删除指定属性),hkeys key (返回对象所有属性名),hvals key(返回对象所有属性值)
    1. 192.168.159.130:7000> HINCRBY person sex 1  
    2. (integer) 2  
    3. 192.168.159.130:7000> HEXISTS person hobby  
    4. (integer) 0  
    5. 192.168.159.130:7000> hlen person  
    6. (integer) 3  
    7. 192.168.159.130:7000> hkeys  
    8. (error) ERR wrong number of arguments for 'hkeys' command  
    9. 192.168.159.130:7000> hkeys person  
    10. 1) "name"  
    11. 2) "age"  
    12. 3) "sex"  
    13. 192.168.159.130:7000> hvals person  
    14. 1) "xiaoming"  
    15. 2) "5"  
    16. 3) "2"  
    17. 192.168.159.130:7000> hdel person sex  
    18. (integer) 1  
    19. 192.168.159.130:7000> hget person sex  
    20. (nil)  

     3.LIST 队列数据类型

  •  lpush  key  value1 value2 ...(从头部依次插入数据),rpush key value1,value2..(从尾部依次插入数据),lrange key 开始索引 结束索引 (查询指定索引范围内的元素  0 -1标示全部)
  1. 192.168.159.130:7000> LPUSH mylist a  
  2. -> Redirected to slot [5282] located at 192.168.159.130:7001  
  3. (integer) 1  
  4. 192.168.159.130:7001> lpush mylist b  
  5. (integer) 2  
  6. 192.168.159.130:7001> LRANGE 0 -1  
  7. (error) ERR wrong number of arguments for 'lrange' command  
  8. 192.168.159.130:7001> LRANGE mylist 0 -1  
  9. 1) "b"  
  10. 2) "a"  
  11. 192.168.159.130:7001> rpush mylist c  
  12. (integer) 3  
  13. 192.168.159.130:7001> lrange mylist 0 -1  
  14. 1) "b"  
  15. 2) "a"  
  16. 3) "c"  
  • linsert key  value before/after 待插入值 (在指定值的前后插入值)
    1. 192.168.159.130:7001> lrange mylist 0 -1  
    2. 1) "b"  
    3. 2) "a"  
    4. 3) "c"  
    5. 192.168.159.130:7001> linsert mylist before a d  
    6. (integer) 4  
    7. 192.168.159.130:7001> lrange mylist 0 -1  
    8. 1) "b"  
    9. 2) "d"  
    10. 3) "a"  
    11. 4) "c"  
    12. 192.168.159.130:7001> linsert mylist after a e  
    13. (integer) 5  
    14. 192.168.159.130:7001> lrange mylist 0 -1  
    15. 1) "b"  
    16. 2) "d"  
    17. 3) "a"  
    18. 4) "e"  
    19. 5) "c"  
  • lset key 位置  value(替换自定位子的值)
    1. 192.168.159.130:7000> lset mylist 1 f  
    2. OK  
    3. 192.168.159.130:7001> lrange mylist 0 -1  
    4. 1) "b"  
    5. 2) "f"  
    6. 3) "a"  
    7. 4) "e"  
    8. 5) "c"  

  • lrem  key  个数  value(删除队列中值为value的元素,个数为正数从头开始删除,个数为负数从尾部开始删除,个数为0全部删除
    1. 192.168.159.130:7001> lrange mylist 0 -1  
    2.  1) "b"  
    3.  2) "a"  
    4.  3) "b"  
    5.  4) "a"  
    6.  5) "a"  
    7.  6) "b"  
    8.  7) "f"  
    9.  8) "a"  
    10.  9) "e"  
    11. 10) "c"  
    12. 192.168.159.130:7001> lrem mylist 1 a  
    13. (integer) 1  
    14. 192.168.159.130:7001> lrange mylist 0 -1  
    15. 1) "b"  
    16. 2) "b"  
    17. 3) "a"  
    18. 4) "a"  
    19. 5) "b"  
    20. 6) "f"  
    21. 7) "a"  
    22. 8) "e"  
    23. 9) "c"  
    24. 192.168.159.130:7001> lrem mylist -1 a  
    25. (integer) 1  
    26. 192.168.159.130:7001> lrange mylist 0 -1  
    27. 1) "b"  
    28. 2) "b"  
    29. 3) "a"  
    30. 4) "a"  
    31. 5) "b"  
    32. 6) "f"  
    33. 7) "e"  
    34. 8) "c"  
    35. 192.168.159.130:7001> lrem mylist 0 b  
    36. (integer) 3  
    37. 192.168.159.130:7001> lrange mylist 0 -1  
    38. 1) "a"  
    39. 2) "a"  
    40. 3) "f"  
    41. 4) "e"  
    42. 5) "c"  
  • ltrim 保留指定范围内数据  成功返回ok

  1. 192.168.159.130:7001> lrange mylist 0 -1  
  2. 1) "a"  
  3. 2) "a"  
  4. 3) "f"  
  5. 4) "e"  
  6. 5) "c"  
  7. 192.168.159.130:7001> ltim mylist 1 2  
  8. (error) ERR unknown command 'ltim'  
  9. 192.168.159.130:7001> ltrim mylist 1 2  
  10. OK  
  11. 192.168.159.130:7001> lrange mylist 0 -1  
  12. 1) "a"  
  13. 2) "f"  

  • llen 返回list个数

  1. 192.168.159.130:7001> ltrim mylist 3 7  
  2. OK  
  3. 192.168.159.130:7001> lrange mylist 0 -1  
  4. (empty list or set)  
  5. 192.168.159.130:7001> llen mylist  
  6. (integer) 0  
  • lpop 和rpop  前者是从头部弹出一个数据  后者是从尾部弹出一个数据
  1. 192.168.159.130:7001> lpop mylist  
  2. (nil)  
  3. 192.168.159.130:7001> lpush mylist a  
  4. (integer) 1  
  5. 192.168.159.130:7001> lpush mylist b  
  6. (integer) 2  
  7. 192.168.159.130:7001> lrange mylist 0 -1  
  8. 1) "b"  
  9. 2) "a"  
  10. 192.168.159.130:7001> rpop mylist  
  11. "a"  
  • lindex (返回指定索引的数据) rpoplpush(弹出前一个list尾部数据 压入后一个list头部,这个方法如果集群也不适合)
  1. 192.168.159.130:7001> lindex mylist 1  
  2. (nil)  
  3. 192.168.159.130:7001> lindex mylist 0  
  4. "b"  
4 .set数据类型  是string类型的无序集合  是通过hashtable实现的,可以进行并集,交集,差集.
  • sadd 新增元素  smembers 显示所有元素
  1. 192.168.159.130:7003> sadd myset a  
  2. -> Redirected to slot [560] located at 192.168.159.130:7000  
  3. (integer) 1  
  4. 192.168.159.130:7000> smembers myset  
  5. 1) "a"  
  • srem 删除 spop 随机弹出一个元素
  1. 192.168.159.130:7000> sadd myset c d e f g  
  2. (integer) 5  
  3. 192.168.159.130:7000> smembers myset  
  4. 1) "c"  
  5. 2) "g"  
  6. 3) "a"  
  7. 4) "d"  
  8. 5) "e"  
  9. 6) "b"  
  10. 7) "f"  
  11. 192.168.159.130:7000> srem myset a  
  12. (integer) 1  
  13. 192.168.159.130:7000> smembers myset  
  14. 1) "g"  
  15. 2) "d"  
  16. 3) "e"  
  17. 4) "c"  
  18. 5) "b"  
  19. 6) "f"  
  20. 192.168.159.130:7000> spop myset  
  21. "d"  
  • sdiff 差集 sinter交集 sunion 并集 sinterstore 取交集并存储到另一个集合中 sunion 取并集并储存到另一个集合中
这里因为我用的是集群式redis 对上述命令不支持.所以不进行演示. 并集交集 用的很少缺很经典 比如 qq共同好友 好友迁移之类
  • smove (移动一个集合的元素到另一个集合) scard(返回集合元素数量)
  1. 192.168.159.130:7002> SMOVE myset myset1 *  
  2. (error) CROSSSLOT Keys in request don't hash to the same slot  
  3. 192.168.159.130:7002> SMOVE myset myset1 a  
  4. (error) CROSSSLOT Keys in request don't hash to the same slot  
  5. 192.168.159.130:7002> scard myset  
  6. -> Redirected to slot [560] located at 192.168.159.130:7000  
  7. (integer) 5  
  8. 192.168.159.130:7000>   
  • sismember 判断集合中是否有这个元素 srandmember 随机返回集合中的一个元素
  1. 192.168.159.130:7000> sismember myset a  
  2. (integer) 0  
  3. 192.168.159.130:7000> sismember myset b  
  4. (integer) 1  
  5. 192.168.159.130:7000> srandmember myset   
  6. "b"  
  7. 192.168.159.130:7000> srandmember myset   
  8. "f"  
5 .zset类型,是在set类型上的升级.增加了顺序score
  • zadd 添加元素 zrange 显示元素 (withscore带分数)
  1. 192.168.159.130:7000> zadd myzset a  
  2. (error) ERR wrong number of arguments for 'zadd' command  
  3. 192.168.159.130:7000> zadd myzset 1 a  
  4. (integer) 1  
  5. 192.168.159.130:7000> zadd myzset 3 a  
  6. (integer) 0  
  7. 192.168.159.130:7000> zadd myzset 3 b  
  8. (integer) 1  
  9. 192.168.159.130:7000> zadd myzset 2 c  
  10. (integer) 1  
  11. 192.168.159.130:7000> zrange 0 -1  
  12. (error) ERR wrong number of arguments for 'zrange' command  
  13. 192.168.159.130:7000> zrange myzset 0 -1  
  14. 1) "c"  
  15. 2) "a"  
  16. 3) "b"  
  17. 192.168.159.130:7000> zrange myzset 0 -1 withscores  
  18. 1) "c"  
  19. 2) "2"  
  20. 3) "a"  
  21. 4) "3"  
  22. 5) "b"  
  23. 6) "3"  
  24. 192.168.159.130:7000> zadd myzset 1 a  
  25. (integer) 0  
  26. 192.168.159.130:7000> zrange myzset 0 -1 withscores  
  27. 1) "a"  
  28. 2) "1"  
  29. 3) "c"  
  30. 4) "2"  
  31. 5) "b"  
  32. 6) "3"  

  • zrem 删除集合中对应元素 zincrby 增加对应元素分数 如果元素不存在对应添加元素
  1. 192.168.159.130:7000> zrem myzset a  
  2. (integer) 1  
  3. 192.168.159.130:7000> zrange myzset 0 -1 withscores  
  4. 1) "c"  
  5. 2) "2"  
  6. 3) "b"  
  7. 4) "3"  
  8. 192.168.159.130:7000> zincrby myzset 5 a  
  9. "5"  
  10. 192.168.159.130:7000> zrange myzset 0 -1 withscores  
  11. 1) "c"  
  12. 2) "2"  
  13. 3) "b"  
  14. 4) "3"  
  15. 5) "a"  
  16. 6) "5"  
  17. 192.168.159.130:7000> zincrby myzset 3 b  
  18. "6"  
  19. 192.168.159.130:7000> zrange myzset 0 -1 withscores  
  20. 1) "c"  
  21. 2) "2"  
  22. 3) "a"  
  23. 4) "5"  
  24. 5) "b"  
  25. 6) "6"  
  • zrank 返回元素位子 zrevrank 返回元素位子(逆序)
  1. 192.168.159.130:7000> zrange myzset 0 -1 withscores  
  2. 1) "c"  
  3. 2) "2"  
  4. 3) "a"  
  5. 4) "5"  
  6. 5) "b"  
  7. 6) "6"  
  8. 192.168.159.130:7000> lrank myzset a  
  9. (error) ERR unknown command 'lrank'  
  10. 192.168.159.130:7000> zrank myzset a  
  11. (integer) 1  
  12. 192.168.159.130:7000> zrank myzset c  
  13. (integer) 0  
  14. 192.168.159.130:7000> zrank myzset b  
  15. (integer) 2  
  16. 192.168.159.130:7000> zrevrank myzset a  
  17. (integer) 1  
  18. 192.168.159.130:7000> zrevrank myzset c  
  19. (integer) 2  
  • zrevrange 返回逆序排序的元素 zrangebyscore 根据给定的分数区间查询元素
  1. 192.168.159.130:7000> zrevrange myzset 0 -1  
  2. 1) "b"  
  3. 2) "a"  
  4. 3) "c"  
  5. 192.168.159.130:7000> zrevrange myzset 0 -1 withscores  
  6. 1) "b"  
  7. 2) "6"  
  8. 3) "a"  
  9. 4) "5"  
  10. 5) "c"  
  11. 6) "2"  
  12. 192.168.159.130:7000> zrangebyscore myzset 0 5  
  13. 1) "c"  
  14. 2) "a"  
  15. 192.168.159.130:7000> zrangebyscore myzset 0 5 withscores  
  16. 1) "c"  
  17. 2) "2"  
  18. 3) "a"  
  19. 4) "5  

  • zcount 返回分数区间元素个数
  1. 192.168.159.130:7000> zcount myzset 0 8  
  2. (integer) 3  
  3. 192.168.159.130:7000> zcount myzset 0 2  
  4. (integer) 1  
  5. 192.168.159.130:7000> zcount myzset 0 1  
  6. (integer) 0  
  7. 192.168.159.130:7000> zcount myzset 0 -1  
  8. (integer) 0  
  • zcard 获取集合中元素数量 zremrangebyrank 根据排名删除 zremrangebyscore 根据分数区间删除
  1. 192.168.159.130:7001> zremrangebyrank myzset 0 1  
  2. -> Redirected to slot [1515] located at 192.168.159.130:7000  
  3. (integer) 2  
  4. 192.168.159.130:7000> zrange 0 -1  
  5. (error) ERR wrong number of arguments for 'zrange' command  
  6. 192.168.159.130:7000> zrange myzset  0 -1  
  7. 1) "b"  
  8. 192.168.159.130:7000> ZREMRANGEBYSCORE myzset 0 3  
  9. (integer) 0  
  10. 192.168.159.130:7000> ZREMRANGEBYSCORE myzset 0 7  
  11. (integer) 1  



==============================================================================================================
redis 数据类型 的命令以及范例 写完了 .希望能帮到大家.下一篇关于redis的博文 是redis的接口类 jedis API剖析
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值