【redis】2-API的使用
一 通用命令
1.1 通用命令
|
|
1.2 数据结构和内部编码
1.3 单线程架构
1.3.1 单线程架构,
一个瞬间只会执行一条命令
1.3.2 单线程为什么这么快
1 纯内存
2 非阻塞IO (epoll),自身实现了事件处理,不在网络io上浪费过多时间
3 避免线程间切换和竞态消耗
1.3.3 注意
1 一次只运行一条命令
2 拒绝长慢命令
-keys,flushall,flushdb,慢的lua脚本,mutil/exec,operate,big value
3 其实不是单线程(在做持久化是另外的线程)
-fysnc file descriptor
-close file descriptor
二 字符串类型
2.1 字符串键值结构
|
|
2.2 常用命令
|
|
三 哈希类型
###3.1 哈希值结构
3.2 重要api
|
|
3.3 hash vs string
3.3.1相似的api
get | hget |
---|---|
set /sentnx | hset hsetnx |
del | hdel |
incr incrby dear decrby | hincrby |
mset | hmset |
mget | hmget |
3.3.2 缓存三种方案
直接json格式字符串
每个字段一个key
使用hash操作
3.4 其他操作
|
|
四 列表类型
4.1 列表特点
有序队列,可以从左侧添加,右侧添加,可以重复,可以从左右两边弹出
4.2 API操作
4.2.1 插入操作
|
|
4.2.2 删除操作
|
|
4.2.3 查询操作
|
|
4.2.3 修改操作
|
|
4.3 实战
实现timeLine功能,时间轴,微博关注的人,按时间轴排列,在列表中放入关注人的微博的即可
4.4 其他操作
|
|
五 集合类型
5.1 特点
无序,无重复,集合间操作(交叉并补)
5.2 API操作
|
|
5.3 实战
抽奖系统 :通过spop来弹出用户的id,活动取消,直接删除
点赞,点踩,喜欢等,用户如果点了赞,就把用户id放到该条记录的集合中
标签:给用户/文章等添加标签,sadd user:1:tags 标签1 标签2 标签3
给标签添加用户,关注该标签的人有哪些
共同好友:集合间的操作
5.4 总结
sadd:可以做标签相关
spop/srandmember:可以做随机数相关
sadd/sinter:社交相关
六 有序集合类型
6.1 特点
|
|
6.2 API使用
|
|
6.3 实战
排行榜:音乐排行榜,销售榜,关注榜,游戏排行榜
6.4 其他操作
|
|
6.5 总结
操作类型 | 命令 |
---|---|
基本操作 | zadd/ zrem/ zcard/ zincrby/ zscore |
范围操作 | zrange/ zrangebyscore/ zcount/ zremrangebyrank |
集合操作 | zunionstore/ zinterstore |
🐱不负韶华,只争朝夕🍚