• 无序列表
  • 有序列表
  • 字符串
  • 哈希值
  • 列表

redis默认端口:6379
redis文档 https://www.runoob.com/redis/redis-pub-sub.html

redis基本用法

  • keys 查看所有数据
  • type 判断类型
  • expire 设置过期时间
  • flushall 清空整个 Redis 服务器的数据
  • redis最常用的是 get,set, publish
  1. help @string # 查看 String key的属性
  2. help @hash
  3. help @list
  4. help @set
  5. help @sorted_set

set集合

s, set的缩写
存放,不能重复的值
没有顺序,不能排序

  1. SADD
  2. sadd 添加集合
  3. smembers 查看集合,查询
  4. srem 删除集合
  5. sunion 合并集合
  6. # sunion list group
  7. sinter 交集
  8. # sinter list group
  9. sdiff 差集
  10. # sdiff list group

image.png

获取集合元素数量

删除

交集

差集

并集

抽奖

正数,只有一个人能中奖
负数,每个人会重复中奖

  • 先抽最多的,
  • 最后抽一等奖 ```bash srangemember 5 正值 # 给出 5个值,大于集合长度,返回全部

    srangemember -10 负值,返回 10个,有重复的值,抽奖

spop

sunionstore dest

  1. <a name="VHwLX"></a>
  2. ### bitmap
  3. 二进制
  4. <a name="Np5LL"></a>
  5. ## sort set有序列表
  6. 还是集合,不能放重复的数据<br />删除的不是下标,而是值
  7. - 排序
  8. - 价格
  9. ```bash
  10. ZADD
  11. zadd
  12. zrem
  13. zange
  14. withScores
  15. zcard

查看元素

  1. zadd price 20.99 apple 100 apple 200 orange
  2. ZRANGE price 0 -1
  3. zrange price 0 -1 withscores # 价格排行榜
  4. zrange price apple
  5. zscore price orange

删除

  1. ZREM

排行榜

  1. zadd price 20.99 apple 100 apple 200 orange
  2. ZRANGE price 0 -1
  3. zrange price 0 -1 withscores
  4. zrange price apple
  5. zrevrange price 0 1
  6. zscore price orange
  7. zscan price apple

redis如何维护有序列表

skiplist 跳表

string字符串

存放二进制的字符串
存储对象,直接把 对象 JSON.stringify 转化为字符串,存入到 redis

  1. set 设置
  2. get 获取
  3. getrange 获取范围,默认从 0开始,类似js的下标
  4. del 删除
  5. incr 增加,针对数字类型的
  6. decr 减少

image.png

秒杀

秒杀是独立的 key
incr 加一

  1. incr phone
  2. incr phone
  3. incr phone

set & get

image.png

expire

过期时间,默认 秒,s
image.png

hash哈希值

h, hash的缩写
hm, hashmore 多获取几个

  1. hset
  2. hget
  3. hmget
  4. hgetall
  5. hvals list #
  6. hdel
  7. hkeys
  8. hincrby user age -1 # 减一
  1. {
  2. school: { name: 'longwen', age: 200 }
  3. }

image.png

image.png

商品详情页

一个商品的详情来自不同的数据库
首次访问,聚合数据,做缓存;后面的访问请求缓存
一级流量,多级缓存

list列表&链表

l,就是 list的缩写;方向 left的意思
列表就是链表

  • 双向链表
  • 栈,同向命令
  • 队列,异向命令
  • 数组
  • LTRIM,评论列表 ```bash lpush # 压入 lpop # 弹出

lrange 查询范围

lrem 删除, # lrem list 0 0,(删除的属性,删除几个,下标) lindex 查询下标

ltrim # 删除区间之外的,分页的场景应用 ltrim list 0 -2 # 删除最后一个

rpop # 右pop rpush

``` image.png

lrem 删除
lrange 0 -1
image.png