Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1. 字符串
redis 127.0.0.1:6379> SET name "李三"
OK
redis 127.0.0.1:6379> GET name
"李三"
redis 127.0.0.1:6379> DEL name
2. 字符串列表List
redis 127.0.0.1:6379> lpush userList "张三"
(integer) 1
redis 127.0.0.1:6379> lpush userList "李四"
(integer) 2
redis 127.0.0.1:6379> lpush userList "王五"
(integer) 3
redis 127.0.0.1:6379> lrange userList 0 10
1) "张三"
2) "李四"
3) "王五"
3. 集合Set
Redis 的 Set 是 string 类型的无序集合。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
redis 127.0.0.1:6379> sadd userList "张三"
(integer) 1
redis 127.0.0.1:6379> sadd userList "李四"
(integer) 1
redis 127.0.0.1:6379> sadd userList "王五"
(integer) 1
redis 127.0.0.1:6379> sadd userList "王五"
(integer) 0
redis 127.0.0.1:6379> smembers userList
1) "张三"
2) "李四"
3) "王五"
插入了2此,但根据集合内元素的唯一性,第二次插入的元素将被忽略。
4. 有序集合ZSet
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
redis 127.0.0.1:6379> zadd userList 0 "张三"
(integer) 1
redis 127.0.0.1:6379> zadd userList 0 "李四"
(integer) 1
redis 127.0.0.1:6379> zadd userList 0 "王五"
(integer) 1
redis 127.0.0.1:6379> zadd userList 0 "王五"
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE userList 0 1000
1) "张三"
2) "李四"
3) "王五"
5. 哈希
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
redis 127.0.0.1:6379> HMSET user_info name "张三" age 20
"OK"
redis 127.0.0.1:6379> HGET runoob name
"张三"
redis 127.0.0.1:6379> HGET runoob age
20