二、Redis的数据类型
回顾Mysql支持的数据类型
int
varchar
date/datetime/timestamp
blob
decimal
更多玩法
https://www.runoob.com/redis/redis-tutorial.html
Redis支持五种数据类型:
string(字符串),
hash(哈希),
list(列表),
set(集合)及
zset(sorted set:有序 集合)。
String(字符串)
string 是 redis 最基本的类型。
redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型的值最大能存储 512MB。
代码
127.0.0.1:6379> SET username 张三
OK
127.0.0.1:6379> GET username
"张三"
Hash(哈希)
如同java的hashmap,可以存多对数据。
代码
127.0.0.1:6379> DEL myclass
127.0.0.1:6379> HMSET myclass
num01 James num02 Wade
OK
127.0.0.1:6379> HGET myclass num01
每个 hash 可以存储 232 -1 键值对(40多亿)。
hashmap的键不能重复。
List(列表)
和Java的ArrayList类似。Redis 列表是简单的字符串列表,按照插入顺序排序。
数据可以重复。
代码(l=list)
127.0.0.1:6379> DEL shoppingList
127.0.0.1:6379> lpush shoppingList yagao
(integer) 1
127.0.0.1:6379> lpush shoppingList maojin
(integer) 2
127.0.0.1:6379> lpush shoppingList lianpeng
(integer) 3
127.0.0.1:6379> lrange shoppingList 0 10
1) "lianpeng"
2) "maojin"
3) "yagao"
127.0.0.1:6379>
常见命令:
lpush key value 将一个或多个值插入到列表头部
LRANGE key start stop 获取列表指定范围内的元素
llen key 获取列表长度
LPOP key 移出并获取列表的第一个元素
(popup=弹出)
LINDEX key index
通过索引获取列表中的元素,可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
Set(集合)
Redis 的 Set 是 string 类型的无序不重复集合。
代码
127.0.0.1:6379> DEL furniture
127.0.0.1:6379> sadd furniture sofa
(integer) 1
127.0.0.1:6379> sadd furniture TV
(integer) 1
127.0.0.1:6379> sadd furniture fridge(integer) 1
127.0.0.1:6379> sadd furniture TV
(integer) 0
127.0.0.1:6379> smembers furniture
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
实例
127.0.0.1:6379> DEL furniture2
127.0.0.1:6379> zadd furniture2 1 TV
(integer) 1
127.0.0.1:6379> zadd furniture2 2 shafa
(integer) 1
127.0.0.1:6379> zadd furniture2 3 bed
(integer) 1
127.0.0.1:6379> zadd furniture2 4 shafa
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE furniture2 1 10
注意:1和10此时指的是score值,不是下标。