Redis 数据类型 Redis 支持七种数据类型
string ( 字符串 )
hash ( 哈希 )
list ( 列表 )
set ( 集合 )
zset ( sorted set:有序集合 )
Bitmaps ( 位图 )
HyperLogLogs ( 基数统计 )
String(字符串)
string 是 Redis 最基本的数据类型,key/value。
string 类型的一个键最大能存储512 MB 数据。
Redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化的对象。
string 类型是二进制安全的。
使用 Redis 的 SET 和 GET 命令来进行设置和读取字符串。
1 2 3 4 5 6 7 127.0.0.1:6379> set name 面向加薪学习 OK 127.0.0.1:6379> get name "\xe9\x9d\xa2\xe5\x90\x91\xe5\x8a\xa0\xe8\x96\xaa\xe5\xad\xa6\xe4\xb9\xa0" 使用工具查看 "面向加薪学习"
Hash(哈希)
Redis Hash 是一个 string 类型的 field 和 value 的映射表。
每个 hash 可以存储 232-1 键值对(40 多亿)。
Hash 适合用于存储对象。
1 2 3 4 5 6 7 8 9 127.0.0.1:6379> hmset account:1 name huanxi password 123456 fav travel OK 127.0.0.1:6379> hgetall account:1 1) "name" 2) "huanxi" 3) "password" 4) "123456" 5) "fav" 6) "travel"
使用 Redis HMSET, HGETALL 命令, account:1 为键。
List(列表)
List 是简单的字符串列表,按照插入顺序排序。
向列表中添加一个元素,可以从列表的头部 ( 左边 ) 或者尾部 ( 右边 )开始。
1 2 3 4 5 6 7 8 9 10 127.0.0.1:6379> rpush study Go语言极简一本通 Go语言微服务核心架构22讲 从0到Go语言微服务架构师 (integer) 3 127.0.0.1:6379> lrange study 0 10 1) "Go\xe8\xaf\xad\xe8\xa8\x80\xe6\x9e\x81\xe7\xae\x80\xe4\xb8\x80\xe6\x9c\xac\xe9\x80\x9a" 2) "Go\xe8\xaf\xad\xe8\xa8\x80\xe5\xbe\xae\xe6\x9c\x8d\xe5\x8a\xa1\xe6\xa0\xb8\xe5\xbf\x83\xe6\x9e\xb6\xe6\x9e\x8422\xe8\xae\xb2" 3) "\xe4\xbb\x8e0\xe5\x88\xb0Go\xe8\xaf\xad\xe8\xa8\x80\xe5\xbe\xae\xe6\x9c\x8d\xe5\x8a\xa1\xe6\x9e\xb6\xe6\x9e\x84\xe5\xb8\x88" 1 Go语言极简一本通 2 Go语言微服务核心架构22讲 3 从0到Go语言微服务架构师
Set(集合)
Set 是 string 类型的无序集合
Set 内元素不可重复,无论插入多少次,只会保留一份。
Set 是通过哈希表实现的,所以添加,删除,查找的时间复杂度都是 O(1)。
sadd 命令 sadd 添加一个 string 元素到 set 集合中。
Redis sadd 语法
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 127.0.0.1:6379> sadd gostudy Go语言极简一本通 (integer) 1 127.0.0.1:6379> sadd gostudy Go语言微服务核心架构22讲 (integer) 1 127.0.0.1:6379> sadd gostudy 从0到Go语言微服务架构师 (integer) 1 127.0.0.1:6379> sadd gostudy Go语言极简一本通 (integer) 0 127.0.0.1:6379> smembers gostudy 1) "\xe4\xbb\x8e0\xe5\x88\xb0Go\xe8\xaf\xad\xe8\xa8\x80\xe5\xbe\xae\xe6\x9c\x8d\xe5\x8a\xa1\xe6\x9e\xb6\xe6\x9e\x84\xe5\xb8\x88" 2) "Go\xe8\xaf\xad\xe8\xa8\x80\xe5\xbe\xae\xe6\x9c\x8d\xe5\x8a\xa1\xe6\xa0\xb8\xe5\xbf\x83\xe6\x9e\xb6\xe6\x9e\x8422\xe8\xae\xb2" 3) "Go\xe8\xaf\xad\xe8\xa8\x80\xe6\x9e\x81\xe7\xae\x80\xe4\xb8\x80\xe6\x9c\xac\xe9\x80\x9a"
Go 语言极简一本通 添加了两次,但最后只存储了一份。
zset ( sorted set:有序集合 ) zset 和 set 一样也是 string 类型元素的集合。不同的是 zset 中的每个元素都有自己的分数(double 类型),通过分数来对集合中的元素进行排序。这个分数是不重复的。
Redis zadd 命令 zset 添加元素到集合中,如果元素在集合中存在则更新对应分数(score)。
Redis zadd 命令语法格式
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 127.0.0.1:6379> zadd studymap 1 Go语言极简一本通 (integer) 1 127.0.0.1:6379> zadd studymap 2 Go语言微服务架构核心22讲 (integer) 1 127.0.0.1:6379> zadd studymap 3 从0到Go语言微服务架构师 (integer) 1 127.0.0.1:6379> zadd studymap 4 Go语言极简一本通 (integer) 0 zrangebyscore studymap 0 10 1) "Go\xe8\xaf\xad\xe8\xa8\x80\xe5\xbe\xae\xe6\x9c\x8d\xe5\x8a\xa1\xe6\x9e\xb6\xe6\x9e\x84\xe6\xa0\xb8\xe5\xbf\x8322\xe8\xae\xb2" 2) "\xe4\xbb\x8e0\xe5\x88\xb0Go\xe8\xaf\xad\xe8\xa8\x80\xe5\xbe\xae\xe6\x9c\x8d\xe5\x8a\xa1\xe6\x9e\xb6\xe6\x9e\x84\xe5\xb8\x88" 3) "Go\xe8\xaf\xad\xe8\xa8\x80\xe6\x9e\x81\xe7\xae\x80\xe4\xb8\x80\xe6\x9c\xac\xe9\x80\x9a"
golang 被添加 2 次,但是最后只存储了一份。
Redis Bitmap ( 位图 ) Bitmap 通过类似 map 结构存放 0 或 1 ( bit 位 ) 作为值。可以用来统计状态,如 日活,打卡,浏览量等。
setbit 命令 setbit 命令用于设置或者清除一个 bit 位
setbit 命令语法格式
例子
1 2 3 4 5 6 7 8 9 10 127.0.0.1:6379> setbit aa 10001 1 # 返回操作之前的数值 (integer) 0 127.0.0.1:6379> setbit aa 10001 2 # 如果值不是0或1就报错 (error) ERR bit is not an integer or out of range 127.0.0.1:6379> setbit aa 10001 0 (integer) 1 127.0.0.1:6379> setbit aa 10001 1 (integer) 0 127.0.0.1:6379> getbit aa 10001 (integer) 1
如何学以致用,在哪些场景中应用Redis 《Go语言+Redis实战课》
添加微信
公众号更多内容