Redis学习之Redis 数据类型(第三十二天)

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)zset(sorted set:有序集合)

string

  • 最基本的类型,一个 key 对应一个 value。
  • 是二进制安全的。意思是 redis 的 string 可以包含任何数据。如jpg图片或者序列化的对象。
  • string 类型的值最大能存储 512MB
127.0.0.1:6379> set  book "C++ and C和指针"
OK
127.0.0.1:6379> get book
"C++ and C\xe5\x92\x8c\xe6\x8c\x87\xe9\x92\x88"
127.0.0.1:6379> 

hash

  • Redis hash 是一个键值(key=>value)对集合。
  • Redis hash 是一个 string 类型的区域内存 和 value 的映射表,hash 特别适合用于存储对象
127.0.0.1:6379> HMSET  name 1 "liusenlin"   2 "xiaoming"
OK
127.0.0.1:6379> HGET  name
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> HGET  name 1
"liusenlin"
127.0.0.1:6379> HGET  name 2
"xiaoming"
127.0.0.1:6379> 

HMSET, HGET 命令,HMSET 设置了两个 kay=>value 对, HGET 获取对应 key 对应的 value。
每个 hash 可以存储 2的32次方 -1 键值对(40多亿)。

list

  • 字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部 、尾部
    列表最多可存储 2的32次方 - 1 元素 (4294967295, 每个列表可存储40多亿)
127.0.0.1:6379> LPUSH  list1    1234
(integer) 1
127.0.0.1:6379> LPUSH  list1    56789
(integer) 2
127.0.0.1:6379> LPUSH  list1    good
(integer) 3
127.0.0.1:6379> LRANGE  list1 0 3
1) "good"
2) "56789"
3) "1234"

set
是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
集合中最大的成员数为 2的32次方 - 1(4294967295, 每个集合可存储40多亿)
sadd 命令
添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0

127.0.0.1:6379> SADD  set1  redis
(integer) 1
127.0.0.1:6379> SADD  set1  mysql
(integer) 1
127.0.0.1:6379> SADD  set1  postgres
(integer) 1
127.0.0.1:6379> SADD  set1  nginx
(integer) 1
127.0.0.1:6379> SADD  set1  docker
(integer) 1
127.0.0.1:6379> SMEMBERS  set1
1) "nginx"
2) "postgres"
3) "mysql"
4) "redis"
5) "docker"
127.0.0.1:6379> SADD  set1  nginx
(integer) 0
127.0.0.1:6379> 

zset
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复

127.0.0.1:6379> 
127.0.0.1:6379> ZADD  vehicle  1   car1
(integer) 1
127.0.0.1:6379> ZADD  vehicle  5   car2
(integer) 1
127.0.0.1:6379> ZADD  vehicle  2   car3
(integer) 1
127.0.0.1:6379> ZADD  vehicle  3   car4
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE vehicle  
(error) ERR wrong number of arguments for 'zrangebyscore' command
127.0.0.1:6379> ZRANGEBYSCORE vehicle  0 2
1) "car1"
2) "car3"
127.0.0.1:6379> ZRANGEBYSCORE vehicle  0 5
1) "car1"
2) "car3"
3) "car4"
4) "car2"
127.0.0.1:6379> ZRANGEBYSCORE vehicle  0 6
1) "car1"
2) "car3"
3) "car4"
4) "car2"
127.0.0.1:6379> 

注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。

每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库,

127.0.0.1:6379[15]> SELECT  0
OK
127.0.0.1:6379> SELECT  15
OK
127.0.0.1:6379[15]> 

与一般数据库区别:
1.Redis不支持自定义数据库的名字,每个数据库都以编号命名,
2.Redis也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问。

发布了205 篇原创文章 · 获赞 47 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/qq_32744005/article/details/105556181