感觉已经到了不得不学Redis的时候了。。
Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的key-value存储数据库。有几大特点:
- 开源单线程
- 内存操作
- 多种数据结构
- 支持事务
- 持久化
- 高可用、分布式
- 主从复制
支持的数据结构
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
字符串
字符串就是一对kv串,而对应的value可以是任意数据,比如jpg图片等,最大能存储 512MB
1 | SET name "hello" |
| hello | world |
|---|---|
| counter | 1 |
| bits | bits |
哈希
哈希是键值对集合,是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)。
1 | HMSET myhash field1 "Hello" field2 "World" |
列表
列表是简单的字符串列表,按照插入顺序排序。
无序集合
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
无序集合如何保证集合中的元素唯一?在添加之前会做两件事
- 判断值是否相等
- 判断hashcode是否相等
有序集合
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数(score)来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。


