简介
Redis (Remote Dictionary Server
远程字典服务)是一个开源的,内存中的key-value
数据结构存储系统,使用C语言编写。它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。支持网络,基于内存亦可持久化,提供多种语言API。
Redis 内置了 复制,LUA脚本, LRU驱动事件,事务和不同级别的磁盘持久化,并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性。
单个操作是原子性的。多个操作也支持事务。
端口:6379
。(作者喜欢的明星在九键上的名字)
Redis使用场景
- 效率高,高速缓存(Redis能读的速度是110000次/s,写的速度是81000次/s )
- 发布订阅系统
- 地图信息分析
- 计时器、计数器
数据类型
key的数据类型都是String,value的数据类型有string(字符串),hash(哈希),list(列表),set(集合),sorted set(有序集合)
。
-
String:value是字符串。可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储 512MB。
set key value
mset key1 value1 key2 value2
:同时设置多个键值对
get key
mget key1 key2
:批量获取
del key
:删除 -
Hash:value值是key-value格式的,适合存储对象类型。每个 hash 可以存储 2^32 -1 键值对(40多亿)。
设置值
hset key key' value
,
获取值hget key key'
查看field有多少hkeys key
-
List:简单的字符串列表,按照插入顺序排序,可重复。可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储 2^32 - 1 元素 (4294967295, 每个列表可存储40多亿)。
从左边添加到列表
lpush key value1 value2
从左边弹出lpop key
查找lrange key start end
从右边添加rpush
从右边弹出rpop key
-
Set:string 类型的无序集合,不能重复。通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
sadd key member
-
Sorted Set(Zset):有序集合,不允许重复。每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。(分数(score)可以重复。)
其他命令
redis-benchmark
:官方自带的性能测试工具select 数据库号
:redis默认支持16个数据库,从第0个开始递增,可以通过select切换数据库。keys *
:显示当前库全部键值
消息订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
【参考文档】
Redis教程
redis的数据类型