Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sorted set:有序集合)。

  1. 1 $redis-cli
  2. 2 redis 127.0.0.1:6379>
  3. 3 redis 127.0.0.1:6379> PING
  4. 4
  5. 5 $ redis-cli -h host -p port -a password

  常规操作(更多操作https://www.runoob.com/redis/redis-keys.html

  1. 1 keys * # 列出所有key
  2. 2 exists key # 判断某个key是否存在
  3. 3 move key db # 当前库就没有了,被移除其它的库了
  4. 4 expire key # 秒钟:为给定的key设置过期时间 当然还有毫秒等等
  5. 5 ttl key # 查看还有多久过期 -1表示永不过期 -2表示已经过期
  6. 6 type key # 查看key类型

  在终端演示

  1. [root@localhost ~]# redis-cli
  2. 127.0.0.1:6379> keys *
  3. (empty list or set)
  4. 127.0.0.1:6379> set k1 v1
  5. OK
  6. 127.0.0.1:6379> set k2 v2
  7. OK
  8. 127.0.0.1:6379> set k3 v3
  9. OK
  10. 127.0.0.1:6379> exists k1
  11. (integer) 1
  12. 127.0.0.1:6379> move k1 2
  13. (integer) 1
  14. 127.0.0.1:6379> keys *
  15. 1) "k3"
  16. 2) "k2"
  17. 127.0.0.1:6379> ttl key
  18. (integer) -2
  19. 127.0.0.1:6379> select 2
  20. OK
  21. 127.0.0.1:6379[2]> get k1
  22. "v1"
  23. 127.0.0.1:6379[2]> select 0
  24. OK
  25. 127.0.0.1:6379> keys *
  26. 1) "k3"
  27. 2) "k2"
  28. 127.0.0.1:6379> ttl k1
  29. (integer) -2
  30. 127.0.0.1:6379> ttl k2
  31. (integer) -1
  32. 127.0.0.1:6379> expire k2 10
  33. (integer) 1
  34. 127.0.0.1:6379> ttl k2
  35. (integer) 3
  36. 127.0.0.1:6379> get k2
  37. (nil)
  38. 127.0.0.1:6379> keys *
  39. 1) "k3"
  40. 127.0.0.1:6379> type k3
  41. string

   常规命令(更多操作https://www.runoob.com/redis/redis-strings.html

  1. 1 set/get/del/append/strlen
  2. 2 Incr/decr/incrby/decrby #一定要是数字才能进行加减
  3. 3 getrange/setrange
  4. 4 setex(set with expire)键秒值/setnx(set if not exist)
  5. 5 mset/mget/msetnx
  6. 6 getset(先getset)

  终端操作

  1. 127.0.0.1:6379> set k3 woshiniba
  2. OK
  3. 127.0.0.1:6379> get k3
  4. "woshiniba"
  5. 127.0.0.1:6379> append k3 12345
  6. (integer) 14
  7. 127.0.0.1:6379> get k3
  8. "woshiniba12345"
  9. 127.0.0.1:6379> strlen k3
  10. (integer) 14
  11. 127.0.0.1:6379> set k2 2
  12. OK
  13. 127.0.0.1:6379> incr k2
  14. (integer) 3
  15. 127.0.0.1:6379> incr k2
  16. (integer) 4
  17. 127.0.0.1:6379> incr k2
  18. (integer) 5
  19. 127.0.0.1:6379> decr k2
  20. (integer) 4
  21. 127.0.0.1:6379> decr k2
  22. (integer) 3
  23. 127.0.0.1:6379> get k2
  24. "3"
  25. 127.0.0.1:6379> incrby k2 3
  26. (integer) 6
  27. 127.0.0.1:6379> incrby k2 3
  28. (integer) 9
  29. 127.0.0.1:6379> decrby k2 3
  30. (integer) 6
  31. 127.0.0.1:6379> decrby k2 3
  32. (integer) 3
  33. 127.0.0.1:6379> incr k3
  34. (error) ERR value is not an integer or out of range
  35. 127.0.0.1:6379> getrange k3 0 -1
  36. "woshiniba12345"
  37. 127.0.0.1:6379> getrange k3 0 -2
  38. "woshiniba1234"
  39. 127.0.0.1:6379> getrange k3 0 8
  40. "woshiniba"
  41. 127.0.0.1:6379> setrange k3 0 xxxx
  42. (integer) 14
  43. 127.0.0.1:6379> get k3
  44. "xxxxiniba12345"
  45. 127.0.0.1:6379> setex k4 10 v4
  46. OK
  47. 127.0.0.1:6379> ttl k4
  48. (integer) 4
  49. 127.0.0.1:6379> setnx k3 v11
  50. (integer) 0
  51. 127.0.0.1:6379> get k3
  52. "xxxxiniba12345"
  53. 127.0.0.1:6379> setnx k4 v4
  54. (integer) 1
  55. 127.0.0.1:6379> get k4
  56. "v4"
  57. 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
  58. OK
  59. 127.0.0.1:6379> mget k1 k2 k3
  60. 1) "v1"
  61. 2) "v2"
  62. 3) "v3"
  63. 127.0.0.1:6379> msetnx k3 v3 k4 v4
  64. (integer) 0
  65. 127.0.0.1:6379> get k4
  66. "v4"
  67. 127.0.0.1:6379> msetnx k3 v3 k4 v4 k5 v5
  68. (integer) 0
  69. 127.0.0.1:6379> get k5
  70. (nil)
  71. 127.0.0.1:6379> keys *
  72. 1) "k2"
  73. 2) "k4"
  74. 3) "k1"
  75. 4) "k3"
  76. 127.0.0.1:6379> flushdb
  77. OK
  78. 127.0.0.1:6379> keys *
  79. (empty list or set)
  80. 127.0.0.1:6379> select 2
  81. OK
  82. 127.0.0.1:6379[2]> keys *
  83. 1) "k1"
  84. 127.0.0.1:6379[2]> del k1
  85. (integer) 1
  86. 127.0.0.1:6379[2]> select 0
  87. OK

  常规操作(更多操作https://www.runoob.com/redis/redis-lists.html

  1. 1 lpush/rpush/lrange
  2. 2 lpop/rpop
  3. 3 lindex #按照索引下标获得元素
  4. 4 llen
  5. 5 lrem key #删n个value
  6. 6 ltrim key #开始index结束index 截取指定范围的值后再赋值给key
  7. 7 rpoplpush #原列表 目的列表
  8. 8 lset key index value
  9. 9 linset key before/after 1 2 

   终端操作

  1. 127.0.0.1:6379> keys *
  2. (empty list or set)
  3. 127.0.0.1:6379> LPUSH list01 1 2 3 4 5
  4. (integer) 5
  5. 127.0.0.1:6379> LRANGE list01 0 -1
  6. 1) "5"
  7. 2) "4"
  8. 3) "3"
  9. 4) "2"
  10. 5) "1"
  11. 127.0.0.1:6379> RPUSH list02 1 2 3 4 5
  12. (integer) 5
  13. 127.0.0.1:6379> LRANGE list02 0 -1
  14. 1) "1"
  15. 2) "2"
  16. 3) "3"
  17. 4) "4"
  18. 5) "5"
  19. 127.0.0.1:6379> LPOP list01
  20. "5"
  21. 127.0.0.1:6379> LPOP list02
  22. "1"
  23. 127.0.0.1:6379> RPOP list01
  24. "1"
  25. 127.0.0.1:6379> RPOP list02
  26. "5"
  27. 127.0.0.1:6379> lrange list01 0 -1
  28. 1) "4"
  29. 2) "3"
  30. 3) "2"
  31. 127.0.0.1:6379> LINDEX list01 0
  32. "4"
  33. 127.0.0.1:6379> LINDEX list02 0
  34. "2"
  35. 127.0.0.1:6379> LLEN list01
  36. (integer) 3
  37. 127.0.0.1:6379> RPUSH list03 1 1 1 2 2 2 3 3 3 4 5 6
  38. (integer) 12
  39. 127.0.0.1:6379> LREM list03 2 2
  40. (integer) 2
  41. 127.0.0.1:6379> lrange list03 0 -1
  42. 1) "1"
  43. 2) "1"
  44. 3) "1"
  45. 4) "2"
  46. 5) "3"
  47. 6) "3"
  48. 7) "3"
  49. 8) "4"
  50. 9) "5"
  51. 10) "6"
  52. 127.0.0.1:6379> lrange list01 0 -1
  53. 1) "4"
  54. 2) "3"
  55. 3) "2"
  56. 127.0.0.1:6379> lset list01 1 x
  57. OK
  58. 127.0.0.1:6379> LRANGE list01 0 -1
  59. 1) "4"
  60. 2) "x"
  61. 3) "2"
  62. 127.0.0.1:6379> LINSERT list01 before x Python
  63. (integer) 4
  64. 127.0.0.1:6379> LRANGE list01 0 -1
  65. 1) "4"
  66. 2) "Python"
  67. 3) "x"
  68. 4) "2"
  69. 127.0.0.1:6379> LINSERT list01 after x C++
  70. (integer) 5
  71. 127.0.0.1:6379> LRANGE list01 0 -1
  72. 1) "4"
  73. 2) "Python"
  74. 3) "x"
  75. 4) "C++"
  76. 5) "2"

小结:

  left right都可以插入添加

  如果键不存在,创建新的链表

  若果键存在,新增内容

  若果值全移除,对应的键就消失了

  链表的操作无论是头和尾效率极高,但是假如是对中间元素进行操作,效率就很惨淡了    

  常规操作(更多操作https://www.runoob.com/redis/redis-sets.html)   

  1. 1 sadd/smembers/sismember
  2. 2 scard #获取集合里边的元素个数
  3. 3 srem key value #删除集合中元素
  4. 4 srandmember key #某个整数(随机出几个数)
  5. 5 spop key #随机出栈
  6. 6 smove key1 key2 key1里某个值将key1里的某个值赋给key2
  7. 7 集合相关 差:sdiff
  8. 8 交:sinter
  9. 9 并:sunion 

   终端操作

  1. 127.0.0.1:6379> sadd set01 1 1 2 2 3 3
  2. (integer) 3
  3. 127.0.0.1:6379> SMEMBERS set01
  4. 1) "1"
  5. 2) "2"
  6. 3) "3"
  7. 127.0.0.1:6379> SISMEMBER set01 1
  8. (integer) 1
  9. 127.0.0.1:6379> SCARD set01
  10. (integer) 3
  11. 127.0.0.1:6379> SREM set01 1
  12. (integer) 1
  13. 127.0.0.1:6379> SMEMBERS set01
  14. 1) "2"
  15. 2) "3"
  16. 127.0.0.1:6379> SADD set01 1 2 3 4 5 6 7 8 9
  17. (integer) 7
  18. 127.0.0.1:6379> SRANDMEMBER set01 3
  19. 1) "9"
  20. 2) "2"
  21. 3) "1"
  22. 127.0.0.1:6379> SRANDMEMBER set01 3
  23. 1) "8"
  24. 2) "3"
  25. 3) "5"
  26. 127.0.0.1:6379> SRANDMEMBER set01 3
  27. 1) "8"
  28. 2) "7"
  29. 3) "3"
  30. 127.0.0.1:6379> SMEMBERS set01
  31. 1) "1"
  32. 2) "2"
  33. 3) "3"
  34. 4) "4"
  35. 5) "5"
  36. 6) "6"
  37. 7) "7"
  38. 8) "8"
  39. 9) "9"
  40. 127.0.0.1:6379> SPOP set01
  41. "3"
  42. 127.0.0.1:6379> SMEMBERS set01
  43. 1) "1"
  44. 2) "2"
  45. 3) "4"
  46. 4) "5"
  47. 5) "6"
  48. 6) "7"
  49. 7) "8"
  50. 8) "9"
  51. 127.0.0.1:6379> sadd set01 x y z
  52. (integer) 3
  53. 127.0.0.1:6379> sadd set02 x y z
  54. (integer) 3
  55. 127.0.0.1:6379> SMOVE set01 set02 5
  56. (integer) 1
  57. 127.0.0.1:6379> SMEMBERS set02
  58. 1) "y"
  59. 2) "5"
  60. 3) "x"
  61. 4) "z"
  62. 127.0.0.1:6379> del set01
  63. (integer) 1
  64. 127.0.0.1:6379> del set02
  65. (integer) 1
  66. 127.0.0.1:6379> keys *
  67. 1) "list01"
  68. 2) "list03"
  69. 3) "list02"
  70. 127.0.0.1:6379> sadd set01 1 2 3 4 5
  71. (integer) 5
  72. 127.0.0.1:6379> sadd set02 1 2 3 a b
  73. (integer) 5
  74. 127.0.0.1:6379> sdiff set01 set02
  75. 1) "4"
  76. 2) "5"
  77. 127.0.0.1:6379> SINTER set01 set02
  78. 1) "1"
  79. 2) "2"
  80. 3) "3"
  81. 127.0.0.1:6379> SUNION set01 set02
  82. 1) "5"
  83. 2) "3"
  84. 3) "2"
  85. 4) "b"
  86. 5) "a"
  87. 6) "4"
  88. 7) "1"

   常规操作(更多操作https://www.runoob.com/redis/redis-hashes.html  

  1. 1 hset/hget/hmset/hmget/hgetall/hdel
  2. 2 hlen
  3. 3 hexists key key里边的某个值的key
  4. 4 hkeys/hvals
  5. 5 hincrby/hincrbyfloat
  6. 6 hsetnx

   终端操作

  1. 127.0.0.1:6379> hset user id 11
  2. (integer) 1
  3. 127.0.0.1:6379> hget user id
  4. "11"
  5. 127.0.0.1:6379> hset user name z3
  6. (integer) 1
  7. 127.0.0.1:6379> hget user name
  8. "z3"
  9. 127.0.0.1:6379> hmset customer id 11 name li4 age 26
  10. OK
  11. 127.0.0.1:6379> hmget customer id name age
  12. 1) "11"
  13. 2) "li4"
  14. 3) "26"
  15. 127.0.0.1:6379> HGETALL customer
  16. 1) "id"
  17. 2) "11"
  18. 3) "name"
  19. 4) "li4"
  20. 5) "age"
  21. 6) "26"
  22. 127.0.0.1:6379> hdel user name
  23. (integer) 1
  24. 127.0.0.1:6379> hget user id
  25. "11"
  26. 127.0.0.1:6379> hlen customer
  27. (integer) 3
  28. 127.0.0.1:6379> hexists customer id
  29. (integer) 1
  30. 127.0.0.1:6379> hkeys customer
  31. 1) "id"
  32. 2) "name"
  33. 3) "age"
  34. 127.0.0.1:6379> hvals customer
  35. 1) "11"
  36. 2) "li4"
  37. 3) "26"
  38. 127.0.0.1:6379> HINCRBY customer age 2
  39. (integer) 28
  40. 127.0.0.1:6379> HINCRBY customer age 2
  41. (integer) 30
  42. 127.0.0.1:6379> HINCRBY customer age 2
  43. (integer) 32
  44. 127.0.0.1:6379> hset customer score 91.5
  45. (integer) 1
  46. 127.0.0.1:6379> HINCRBYFLOAT customer score 4
  47. "95.5"
  48. 127.0.0.1:6379> HSETNX customer age 26
  49. (integer) 0
  50. 127.0.0.1:6379> HSETNX customer email abc@126.com
  51. (integer) 1

  常规操作(更多操作https://www.runoob.com/redis/redis-sorted-sets.html) 

  1. 1 set基础上加一个scroe的值之前k1 v1 v2 v3,现在zset k1 score v1 score2 v2
  2. 2 zadd/zrange
  3. 3 zrangebyscore key 开始score 结束score
  4. 4 zrem key score下对应的vaule 作用是删除元素
  5. 5 zcard/zcount key score区间/zrank key values 作用是获得下标值/zscore key 对应值获得分
  6. 6 zrevrank key values 作用是逆序获得下标值
  7. 7 zrevrange
  8. 8 zrevrangebyscore key 结束score 开始score
  9. 9 zrangebyscore key 开始score 结束score withscores ( 不包含 Limit作用是返回限制 limit开始下标步 多少步 

   终端操作

  1. 127.0.0.1:6379> zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
  2. (integer) 5
  3. 127.0.0.1:6379> zrange zset01 0 -1
  4. 1) "v1"
  5. 2) "v2"
  6. 3) "v3"
  7. 4) "v4"
  8. 5) "v5"
  9. 127.0.0.1:6379> zrange zset01 0 -1 withscores
  10. 1) "v1"
  11. 2) "60"
  12. 3) "v2"
  13. 4) "70"
  14. 5) "v3"
  15. 6) "80"
  16. 7) "v4"
  17. 8) "90"
  18. 9) "v5"
  19. 10) "100"
  20. 127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90
  21. 1) "v1"
  22. 2) "v2"
  23. 3) "v3"
  24. 4) "v4"
  25. 127.0.0.1:6379> ZRANGEBYSCORE zset01 60 (90
  26. 1) "v1"
  27. 2) "v2"
  28. 3) "v3"
  29. 127.0.0.1:6379> ZRANGEBYSCORE zset01 (60 (90
  30. 1) "v2"
  31. 2) "v3"
  32. 127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90 limit 2 2
  33. 1) "v3"
  34. 2) "v4"
  35. 127.0.0.1:6379> zrem zset01 v5
  36. (integer) 1
  37. 127.0.0.1:6379> zrange zset01 0 -1
  38. 1) "v1"
  39. 2) "v2"
  40. 3) "v3"
  41. 4) "v4"
  42. 127.0.0.1:6379> ZRANGE zset01 0 -1 withscores
  43. 1) "v1"
  44. 2) "60"
  45. 3) "v2"
  46. 4) "70"
  47. 5) "v3"
  48. 6) "80"
  49. 7) "v4"
  50. 8) "90"
  51. 127.0.0.1:6379> zcard zset01
  52. (integer) 4
  53. 127.0.0.1:6379> ZCOUNT zset01 60 80
  54. (integer) 3
  55. 127.0.0.1:6379> ZRANK zset01 v4
  56. (integer) 3
  57. 127.0.0.1:6379> ZSCORE zset01 v4
  58. "90"
  59. 127.0.0.1:6379> ZREVRANK zset01 v4
  60. (integer) 0
  61. 127.0.0.1:6379> ZREVRANGE zset01 0 -1
  62. 1) "v4"
  63. 2) "v3"
  64. 3) "v2"
  65. 4) "v1"
  66. 127.0.0.1:6379> ZREVRANGEBYSCORE zset01 90 60 withscores limit 2 2
  67. 1) "v2"
  68. 2) "70"
  69. 3) "v1"
  70. 4) "60"
  71. 127.0.0.1:6379> ZREVRANGEBYSCORE zset01 90 60 withscores limit 0 2
  72. 1) "v4"
  73. 2) "90"
  74. 3) "v3"
  75. 4) "80"
  76. 127.0.0.1:6379>

  

 

版权声明:本文为Alexephor原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Alexephor/p/11455875.html