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

  1. <a name="h3oum"></a>
  2. ## 2. 列表 list
  3. - 一个key对应多个value,类似java的list
  4. - 有序的列表结构
  5. ```shell
  6. > lpush mylist a # 从左边插入数据
  7. (ineteger)1
  8. > rpush mylist b # 从右边插入数据
  9. (integer)1
  10. > lpush mylist a b c # 批量插入
  11. (integer)3
  12. > lrange mylist 0 -1 # 检索数据,lrange 需要两个索引,0 就是从第 0 个,-1 是倒数第一个
  13. 1)"b"
  14. 2)"a"
  15. > rpop mylist # 当列表中没有元素时返回 null
  16. (nil)
  17. > del mylist # 删除列表
  18. (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 ```