1.字符串 string
- 一个key对应一个value ```shell redis> keys * #查看所有key redis> set keyname keyvalue #设置key和value redis> get keyname #根据key获取value
redis> expire keyname 30 #设置过期时间为 30 秒 (integer) 1 redis> ttl keyname #查看剩余过期时间 (integer) 23
<a name="h3oum"></a>## 2. 列表 list- 一个key对应多个value,类似java的list- 有序的列表结构```shell> lpush mylist a # 从左边插入数据(ineteger)1> rpush mylist b # 从右边插入数据(integer)1> lpush mylist a b c # 批量插入(integer)3> lrange mylist 0 -1 # 检索数据,lrange 需要两个索引,0 就是从第 0 个,-1 是倒数第一个1)"b"2)"a"> rpop mylist # 当列表中没有元素时返回 null(nil)> del mylist # 删除列表(integer)1
3.字典 hash
- 类似java的map,适合存储结构化的数据,比如 Java 中的对象
```shell
hset student name 张三 # 可以理解为忘名叫student的map中添加 kv 键值对 (integer)1 # 返回1 代表 不存在这个key,并且添加成功 hset student sex 男 (integer)1 hset student name 张三 (integer)0 # 返回0 因为这个key已经存在
hgetall student # 获取所有属性 1)”name” 2)”张三” 3)”sex” 4)”男”
hdel student name #删除这key (integer)1 # 返回 1 同样代表整个 key 存在 并且删除成功 hdel student name (integer)0 # 返回 0 是因为 该 key 已经不存在 ```
4.集合 set
- Redis 的set和list都可以存储多个字符串
- list是有序可重复,而set是无序不可重复
```shell
sadd family mother # 尝试将 mother 添加进 family 集合中 (integer)1 # 返回 1 表示添加成功,0 表示元素已经存在集合中 sadd family father (integer)1 sadd family father (intger)0
smembers family # 获取集合中所有的元素 1)”mother” 2)”father” sismember family father # 判断 father 是否在 family 集合中 (integer)1 # 1 存在;0 不存在 sismber family son (integer)0
srem family son # 移除 family 集合中元素 son (integer)1 # 1 表示存在并且移除成功;0 表示存在该元素 srem family som (integer)0 ```
5. 有序 zset
- set的基础上,增加排序
- 适用于 排行榜(微博热搜top10)
```shell
zadd class 100 member1 # 将member1元素及其score值100加入到 有序集合 class中 (integer)1 zadd class 90 member2 80 member3 # 批量添加 (integer)2
zrange class 0 -1 withscores # 获取有序集合中的值与score,并按 score 排序 1)”member3” 2)”80” 3)”member2” 4)”90” 5)”member1” 6)”100”
zrem class member1 # 删除 class 中 的member1 (integer)1 ```
