Redis笔记(自用)
Redis
Redis: Remote Dictionary Server
三个特点:
- Redis 支持数据持久化. 可以将内存中的数据保持在磁盘中, 重启后可再次使用
- Redis 支持
key-val
,list
,set
,zset
,hash
等数据结构存储 - Redis 支持数据备份, master-slave 模式数据备份
零碎基础知识
- 单进程 (*) 单进程处理客户端的请求, 对读写事件响应是通过
epoll
函数而包装来操作. Redis 实际处理速度完全依靠主进程执行效率 - 默认
16
个数据库, 类似数组下标从0
开始, 初始默认使用0
号库 select
切换数据库dbsize
查看当前数据库的key
的数量flushdb
清空当前数据库flushall
删全部库- 统一密码管理,
16
个库同一个密码 - Redis 索引是从
0
开始 - 默认端口
6379
Redis 数据类型
五大数据类型
- String (字符串)
- Hash (哈希, 类似 Java HashMap)
- List (列表)
- Set (集合)
- Zset (Sorted Set: 有序集合)
String (字符串)
- 一个
key
对应一个value
- 二进制安全. 可以包含任何数据, 包括图片或者序列化对象
value
最多可以是 512M
Hash
- string 类型的
field
和value
的映射表
List (列表)
- 底层是一个链表
- 按照插入顺序排序, 可以在头部或者尾部插入数据
Set
- string 类型的无序集合, 是通过 HashTable 实现的
Zset (Sorted Set)
- string 类型的集合
- 与 Set 不同的是: 每个元素都会关联一个 double 类型的分数
- Redis 通过分数来为集合中的成员进行从小到大排序
- zset 成员唯一, 但是分数 (score) 可以重复!
Redis 键 (key)
1 | key * |
Redis 字符串 (String)
单值单 value
1 | set / get / del / append / strlen |
Redis 列表 (List)
单值多 value
1 | lpush / rpush / lrange |
性能总结
- 是一个字符串链表, left, right 都可以插入添加
- 如果键不存在, 创建新的链表
- 如果键已存在, 新增内容
- 如果值完全移除, 对应的键也就消失了
- 链表操作头尾效率很高, 中间元素效率不高
Redis 集合 (Set)
单值多 value
1 | sadd / smembers / sismembers |
Redis 哈希 (Hash)
KV 模式不变, 但 V 是一个键值对
1 | hset / hget / hmset / hmget / hgetall / hdel |
Redis 有序集合 (Zset)
1 | zadd / zrange (withscores) |
Reference
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 惜别的秘密基地!
评论
UtterancesGiscus