Redis --- 数据类型之列表 数据类型之hash

一、数据类型之列表

列表简介

Redis的list是一个字符队列,先进后出,一个key可以有多个值

列表操作

lpush key values [value ...]
将一个或多个值value插入到列表key的表头,Key不存在,则创建key


   
   
     
     
     
     
  1. 127.0.0.1:6379> FLUSHALL
  2. OK
  3. # lpush命令,创建变量student,类型为列表类型,值为bob,tom,lucy,lili
  4. 127.0.0.1:6379> LPUSH student bob tom lucy lili
  5. ( integer) 4
  6. 127.0.0.1:6379> type student
  7. list
  8. # 将A和B存储到列表student的表头
  9. 127.0.0.1:6379> LPUSH student A B
  10. ( integer) 6
  11. # lrange key start stop 从列表中取值
  12. # 从开始位置读取key的值到stop结束
  13. # 取出列表中的所有值,0 指第一个值,-1 指最后一个值
  14. 127.0.0.1:6379> LRANGE student 0 -1
  15. 1) "B"
  16. 2) "A"
  17. 3) "lili"
  18. 4) "lucy"
  19. 5) "tom"
  20. 6) "bob"
  21. # 取出列表中的值,0 指第一个值,1 指第二个值
  22. 127.0.0.1:6379> LRANGE student 0 1
  23. 1) "B"
  24. 2) "A"
  25. # 从后往前取出列表中的值,-2 指倒数第二个值,-1 指倒数第一个值
  26. 127.0.0.1:6379> LRANGE student -2 -1
  27. 1) "tom"
  28. 2) "bob"
  29. # 从后往前取出列表中的值,2 指第三个值,4 指第五个值
  30. 127.0.0.1:6379> LRANGE student 2 4
  31. 1) "lili"
  32. 2) "lucy"
  33. 3) "tom"
  34. # lpop key移除并返回列表头元素数据,key不存在则返回nil
  35. # 取出列表中的所有值,0 指第一个值,-1 指最后一个值
  36. 127.0.0.1:6379> LRANGE student 0 -1
  37. 1) "B"
  38. 2) "A"
  39. 3) "lili"
  40. 4) "lucy"
  41. 5) "tom"
  42. 6) "bob"
  43. # 删除列表第一个值,返回被删除的值
  44. 127.0.0.1:6379> LPOP student
  45. "B"
  46. 127.0.0.1:6379> LRANGE student 0 -1
  47. 1) "A"
  48. 2) "lili"
  49. 3) "lucy"
  50. 4) "tom"
  51. 5) "bob"
  52. 127.0.0.1:6379> LPOP student
  53. "A"
  54. 127.0.0.1:6379> LRANGE student 0 -1
  55. 1) "lili"
  56. 2) "lucy"
  57. 3) "tom"
  58. 4) "bob"
  59. # llen key 返回列表key的长度
  60. # 统计列表中值的数量
  61. 127.0.0.1:6379> TYPE student
  62. list
  63. 127.0.0.1:6379> LLEN student
  64. ( integer) 4
  65. # 取出列表中的所有值,0 第一个,-1 最后一个
  66. 127.0.0.1:6379> LRANGE student 0 -1
  67. 1) "lili"
  68. 2) "lucy"
  69. 3) "tom"
  70. 4) "bob"
  71. # lindex key index 返回列表中第 index 个值
  72. # lindex 输出列表中的某一个值
  73. # lindex命令,输出列表student中的第一个值
  74. 127.0.0.1:6379> TYPE student
  75. list
  76. 127.0.0.1:6379> LRANGE student 0 -1
  77. 1) "lili"
  78. 2) "lucy"
  79. 3) "tom"
  80. 4) "bob"
  81. 127.0.0.1:6379> LINDEX student 0
  82. "lili"
  83. # lindex命令,输出列表student中的倒数第一个值
  84. 127.0.0.1:6379> LINDEX student -1
  85. "bob"
  86. # lindex命令,输出列表student中的倒数第二个值
  87. 127.0.0.1:6379> LINDEX student -2
  88. "tom"
  89. # lset key index value 将key中index位置的值修改为value
  90. # lset 修改列表中具体的某一个值
  91. # 修改列表student的第一个值为 AAA
  92. 127.0.0.1:6379> LRANGE student 0 -1
  93. 1) "lili"
  94. 2) "lucy"
  95. 3) "tom"
  96. 4) "bob"
  97. 127.0.0.1:6379> LSET student 0 AAA
  98. OK
  99. 127.0.0.1:6379> LRANGE student 0 -1
  100. 1) "AAA"
  101. 2) "lucy"
  102. 3) "tom"
  103. 4) "bob"
  104. # 修改列表student的最后一个值为 CCC
  105. 127.0.0.1:6379> lset student -1 CCC
  106. OK
  107. 127.0.0.1:6379> LRANGE student 0 -1
  108. 1) "AAA"
  109. 2) "lucy"
  110. 3) "tom"
  111. 4) "CCC"
  112. # rpush 在列表的最后插入值
  113. 127.0.0.1:6379> LRANGE student 0 -1
  114. 1) "AAA"
  115. 2) "lucy"
  116. 3) "tom"
  117. 4) "CCC"
  118. # 在列表student的最后插入值
  119. 127.0.0.1:6379> RPUSH student FFF ZZZ
  120. ( integer) 6
  121. 127.0.0.1:6379> LRANGE student 0 -1
  122. 1) "AAA"
  123. 2) "lucy"
  124. 3) "tom"
  125. 4) "CCC"
  126. 5) "FFF"
  127. 6) "ZZZ"
  128. # lpush命令,在列表student的开头插入值
  129. 127.0.0.1:6379> LPUSH student iii kkk
  130. ( integer) 8
  131. 127.0.0.1:6379> LRANGE student 0 -1
  132. 1) "kkk"
  133. 2) "iii"
  134. 3) "AAA"
  135. 4) "lucy"
  136. 5) "tom"
  137. 6) "CCC"
  138. 7) "FFF"
  139. 8) "ZZZ"
  140. # rpop 每次都删除列表最后的值
  141. 127.0.0.1:6379> LRANGE student 0 -1
  142. 1) "kkk"
  143. 2) "iii"
  144. 3) "AAA"
  145. 4) "lucy"
  146. 5) "tom"
  147. 6) "CCC"
  148. 7) "FFF"
  149. 8) "ZZZ"
  150. 127.0.0.1:6379> RPOP student
  151. "ZZZ"
  152. 127.0.0.1:6379> LRANGE student 0 -1
  153. 1) "kkk"
  154. 2) "iii"
  155. 3) "AAA"
  156. 4) "lucy"
  157. 5) "tom"
  158. 6) "CCC"
  159. 7) "FFF"
  160. # 删除列表student的开头的值,并返回被删除的值
  161. 127.0.0.1:6379> LPOP student
  162. "kkk"
  163. 127.0.0.1:6379> LRANGE student 0 -1
  164. 1) "iii"
  165. 2) "AAA"
  166. 3) "lucy"
  167. 4) "tom"
  168. 5) "CCC"
  169. 6) "FFF"

二、数据类型之hash

hash简介

Redis hash
是一个string类型的 field(列) 和 value(值) 的映射表,一个key可对应多个field,一个field对应一个value,将一个对象存储为 hash 类型,较于每个字段都存储成 string 类型更能节省内存

举例说明,hash类型存储数据比字符更节省空间

需要同时定义多个变量,存储不同的信息 ,字符类型存储书本的信息:
书名 xxxxxx
作者 xxxxxx
价格 xxxxxx
版本 xxxxxx
出版社 xxxxxx

只需定义一个变量,这个变量中可以存储多个字段,不同字段存储不同的值
hash类型存储书本的信息:
书名 红楼梦
作者 xxxxxx
价格 xxxxxx
版本 xxxxxx
出版社 xxxxxx

hash操作


   
   
     
     
     
     
  1. # hset key field value 将hash表中field 值设置为 value
  2. # 创建变量site,第一个字段为baidu, 字段值为 www.baidu.com
  3. 127.0.0.1:6379> HSET site baidu www.baidu.com
  4. ( integer) 1
  5. 127.0.0.1:6379> TYPE site
  6. hash
  7. # hget key filed 获取 hash 表中 field 的值
  8. # hget命令,查看变量site中,第一个字段baidu的值
  9. 127.0.0.1:6379> HGET site baidu
  10. "www.baidu.com"
  11. # hmset同时定义多个字段
  12. # 在变量site中,再添加一个字段jd,字段值为www.jd.com
  13. 127.0.0.1:6379> HMSET site jd www.jd.com
  14. OK
  15. # 在变量site中,同时添加多个字段tmall, sina, jm
  16. 127.0.0.1:6379> hmset site tmall www.tmall.com sina www.sina.com jm www.jm.com
  17. OK
  18. # hmget 同时获取多个hash类型的变量的值
  19. 127.0.0.1:6379> HMGET site jd baidu jm tmall sina
  20. 1) "www.jd.com"
  21. 2) "www.baidu.com"
  22. 3) "www.jm.com"
  23. 4) "www.tmall.com"
  24. 5) "www.sina.com"
  25. # hkeys 获取hash类型变量的所有字段
  26. 127.0.0.1:6379> HKEYS site
  27. 1) "baidu"
  28. 2) "jd"
  29. 3) "tmall"
  30. 4) "sina"
  31. 5) "jm"
  32. hvals 获取 hash类型变量的所有字段对应的值
  33. 127.0.0.1:6379> HVALS site
  34. 1) "www.baidu.com"
  35. 2) "www.jd.com"
  36. 3) "www.tmall.com"
  37. 4) "www.sina.com"
  38. 5) "www.jm.com"
  39. # hgetall 获取hash类型变量的所有字段和值
  40. 127.0.0.1:6379> HGETALL site
  41. 1) "baidu"
  42. 2) "www.baidu.com"
  43. 3) "jd"
  44. 4) "www.jd.com"
  45. 5) "tmall"
  46. 6) "www.tmall.com"
  47. 7) "sina"
  48. 8) "www.sina.com"
  49. 9) "jm"
  50. 10) "www.jm.com"
  51. # hdel 删除hash类型变量的多个字段
  52. 127.0.0.1:6379> HDEL site jd
  53. ( integer) 1
  54. 127.0.0.1:6379> HDEL site jm sina
  55. ( integer) 2
  56. # hkeys命令,获取hash类型变量的所有字段, jm和sina字段被删除
  57. 127.0.0.1:6379> HKEYS site
  58. 1) "baidu"
  59. 2) "tmall"

你可能感兴趣的:(redis,哈希算法,数据库)