Redis 之 五大基本数据类型

小灰灰 2023-05-22 22:19 92阅读 0赞

五大基本类型

string(字符串)








string(字符串)

二进制安全的,可包含任何数据,一个键最大能储存512MB

举例

redis 127.0.0.1:6379> SET name “runoob” #设置key

OK

redis 127.0.0.1:6379> GET name #获取key

“runoob”
























































append name ddd

key=name后面添加字符串

strlen name        

计算key=name长度

incr views         

key=name加1

decr views        

key=name减1

incrby views  n       

key=name加n

decrby views  n      

key=name减n

getrange name 0 7

获取key=name的范围 0  -1表示全部

setrange name 7 jjj

字符替换,从index=7开始

setex key3 5 llll

设置key3的过期时间

setnx name 111

不存在name创建,否则失败

mset k1 v1 k2 v2 k3 v3

批量设置,有一个错误就所有失败

mget k1 k2 k3

批量获取

getset name 4444

获取旧值设置新值

hash(哈希)








hash(哈希)

是一个string类型的field和value的映射表,hash特别适合用于存储对象

每个 hash 可以存储(2^32)-1 键值对(40多亿)

举例

  1. 127.0.0.1:6330[2]> hset myhash f1 aaa #设置键值
  2. 127.0.0.1:6330[2]> hget myhash f1 #获取键值
  3. "aaa"
  4. 127.0.0.1:6330[2]> hmset myhash f1 aa f2 bb f3 cc #批量设置
  5. OK
  6. 127.0.0.1:6330[2]> hmget myhash f1 f2 f3 #批量获取
  7. 1) "aa"
  8. 2) "bb"
  9. 3) "cc"
  10. 127.0.0.1:6330[2]> hgetall myhash #获取myhash中信息
  11. 1) "f1"
  12. 2) "aa"
  13. 3) "f2"
  14. 4) "bb"
  15. 5) "f3"
  16. 6) "cc"
  17. 127.0.0.1:6330[2]> hlen myhash #获取myhash中元素个数
  18. (integer) 3
  19. 127.0.0.1:6330[2]> hincrby myhash f5 4 #将f5字段值加4,返回结果,可以为负数
  20. (integer) 7
  21. 127.0.0.1:6330[2]> hsetnx myhash f4 ii #如果存在不设置
  22. (integer) 1

应用:

1.用户信息保存

2.经常变动的信息

list(列表)








list(列表)

是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 

容量和hash一样40多亿

举例:

redis 127.0.0.1:6379> lpush runoob redis #插入元素

(integer) 1

redis 127.0.0.1:6379> lpush runoob mongodb

(integer) 2

redis 127.0.0.1:6379> lpush runoob rabitmq

(integer) 3

redis 127.0.0.1:6379> lrange runoob 0 10 #查看key中一个区间的元素

1) “rabitmq”

2) “mongodb”

3) “redis”
















































rpush list four

放入另一边,与lpush相反,即在lpush第一次插入元素之前插入一个元素

lpop list

从lpush插入一端移除一个,即删除lpush最后插入的元素

rpop list

从另一端移除一个,即删除lpush第一个插入的元素

LINDEX 1

获取index=1的元素,从lpush最后插入元素作为0开始。不会删除元素

LLEN list

返回list长度

LREM list 1 one

移除list中1个one

ltrim list 1 2

截取列表中的元素ltrim key start stop,这里的索引和lindex一样

rpoplpush list mylist

移除列表中元素到新列表

exists list

判断列表是否存在

lset list 2 sss

从lpush插入最后一个元素开始,设置index=2的值

linsert key BEFORE|AFTER pivot value

在某个值前/后面插入值。before为插入元素lindex索引小,after为lindex索引大

应用范围:

消息队列,队列,栈

set(元素唯一无序集合)








set(集合)

是string类型的无序集合。元素唯一,若存在,添加失败

集合通过哈希表实现的,复杂度为常数

插入元素到set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误

举例:

  1. 127.0.0.1:6379> sadd key a 2 3 4 5 6 #添加元素到key中
  2. (integer) 6
  3. 127.0.0.1:6379> SMEMBERS key #查看key中的元素
  4. 1) "a"
  5. 2) "3"
  6. 3) "2"
  7. 4) "6"
  8. 5) "5"
  9. 6) "4"
  10. 127.0.0.1:6379> SISMEMBER key 4 #判断key中是否有4
  11. (integer) 1
  12. 127.0.0.1:6379> SCARD key #计算key中元素个数
  13. (integer) 6
  14. 127.0.0.1:6379> srem key a #删除key中元素a
  15. (integer) 1
  16. 127.0.0.1:6379> SMEMBERS key
  17. 1) "6"
  18. 2) "5"
  19. 3) "2"
  20. 4) "3"
  21. 5) "4"
  22. 127.0.0.1:6379> SRANDMEMBER key 2 ##随机返回n个key中的元素,不删除
  23. 1) "5"
  24. 2) "3"
  25. 127.0.0.1:6379> SMEMBERS key
  26. 1) "6"
  27. 2) "5"
  28. 3) "2"
  29. 4) "3"
  30. 5) "4"
  31. 127.0.0.1:6379> spop key #随机删除一个元素
  32. "4"
  33. 127.0.0.1:6379> smove key key2 3 #将key中的元素3移动到key2
  34. (integer) 1
  35. 127.0.0.1:6379> SMEMBERS key
  36. 1) "6"
  37. 2) "5"
  38. 3) "2"
  39. 127.0.0.1:6379> SMEMBERS key2
  40. 1) "3"

集合操作

  1. 127.0.0.1:6330[2]> smembers set1
  2. 1) "1"
  3. 2) "2"
  4. 3) "3"
  5. 4) "4"
  6. 127.0.0.1:6330[2]> smembers set2
  7. 1) "3"
  8. 2) "4"
  9. 3) "5"
  10. 4) "6"
  11. 127.0.0.1:6330[2]> sdiff set1 set2 #差集
  12. 1) "1"
  13. 2) "2"
  14. 127.0.0.1:6330[2]> sinter set1 set2 #交集
  15. 1) "3"
  16. 2) "4"
  17. 127.0.0.1:6330[2]> sunion set1 set2 #并集
  18. 1) "1"
  19. 2) "2"
  20. 3) "3"
  21. 4) "4"
  22. 5) "5"
  23. 6) "6"

sunionstore set3 set1 set2 #计算set1和set2的并集并保存在set3中

sdiffstore

sinterstore

应用范围:

微博关注放到set中,计算共同关注

zset(唯一有序集合)








zset(有序集合)

每个元素关联一个double类型的分数用来排序,成员唯一,分数可以重复

举例:

  1. ####添加元素
  2. 127.0.0.1:6330[9]> zadd myset 300 ccc
  3. (integer) 1
  4. 127.0.0.1:6330[9]> zadd myset 100 fff
  5. (integer) 1
  6. 127.0.0.1:6330[9]> zadd myset 700 aaa
  7. (integer) 1
  8. ####
  9. 127.0.0.1:6330[9]> zrange myset 0 -1 #查看所有元素,从小到大
  10. 1) "fff"
  11. 2) "ccc"
  12. 3) "aaa"
  13. 127.0.0.1:6330[9]> zrangebyscore myset -inf inf #查看所有元素,从小到大
  14. 1) "fff"
  15. 2) "ccc"
  16. 3) "aaa"
  17. 127.0.0.1:6330[9]> zrevrange myset 0 -1 #查看所有元素,从大到小
  18. 1) "aaa"
  19. 2) "ccc"
  20. 3) "fff"
  21. 127.0.0.1:6330[9]> zrangebyscore myset -inf inf withscores ##查看所有元素,从小到大,并打印分数
  22. 1) "fff"
  23. 2) "100"
  24. 3) "ccc"
  25. 4) "300"
  26. 5) "aaa"
  27. 6) "700"
  28. 127.0.0.1:6330[9]> zrangebyscore myset -inf 600 withscores #查看某一区间元素,从小到大
  29. 1) "fff"
  30. 2) "100"
  31. 3) "ccc"
  32. 4) "300"
  33. 127.0.0.1:6330[9]> zrem myset aaa #删除元素
  34. (integer) 1
  35. 127.0.0.1:6330[9]> zrange myset 0 -1
  36. 1) "fff"
  37. 2) "ccc"
  38. 127.0.0.1:6330[9]> zadd myset 700 aaa
  39. (integer) 1
  40. 127.0.0.1:6330[9]> zcount myset 200 600 #计算某个区间元素个数
  41. (integer) 1
  42. 127.0.0.1:6330[9]> zcard myset #返回所有元素个数
  43. (integer) 3

应用:

1.班级成绩
2.工资
3.消息优先级
4.排行榜实现

以上命令也可以去官网查看示例:

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读