Redis(Remote Dictionary Server)是一个开源的,高性能的,支持网络、可基于内存也可以持久化的键值对(key-value)存储系统。它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构,如字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希表(hashes)、位图(bitmaps)、超日志(hyperloglogs)和地理空间(geospatial)索引半径查询。
Redis的主要特点包括:
- 高性能:Redis能读的速度是110000次/s,写的速度是81000次/s。
- 数据类型丰富:支持多种数据类型,适用于不同的场景。
- 持久化:可以将内存中的数据保持在磁盘中,重启时可以再次加载进行使用。
- 支持事务:可以保证一串命令的原子性、一致性、隔离性、持久性。
- 支持主从复制:支持数据备份,即主服务器和从服务器之间的数据同步。
- 高可用和分区:提供自动或手动的数据分片功能,能够提供高可用性。
Redis的应用场景:
- 缓存系统:减轻数据库的访问压力,提高系统的响应速度。
- 排行榜或计数器:利用Redis的数据结构和原子操作实现。
- 消息队列:使用Redis的列表结构作为消息队列,处理高并发时的消息排队。
- 社交网络:使用Redis集合实现如点赞、标签、好友等功能。
- 实时分析:利用Redis的数据结构和高速读写能力进行实时分析。
Redis的局限性:
- 数据量受限于内存大小:由于Redis是基于内存的存储系统,所以存储的数据量受限于服务器的内存大小。
- 单线程模型:虽然Redis的单线程模型使其简单高效,但也意味着不能充分利用多核CPU的优势。
Redis常用命令
Redis的常用命令分为几大类,包括对键(key)的操作、对字符串(string)的操作、对列表(list)的操作、对集合(set)的操作、对有序集合(sorted set)的操作、对哈希(hash)的操作、事务控制命令、服务器控制命令等。
键(Key)操作
DEL key
:删除一个键。DUMP key
:序列化给定键,返回被序列化的值。EXISTS key
:检查给定键是否存在。EXPIRE key seconds
:为键设置过期时间。KEYS pattern
:查找所有符合给定模式(pattern)的键。TTL key
:返回键的剩余过期时间。TYPE key
:返回键所存储值的类型。
字符串(String)操作
SET key value
:设置键的值。GET key
:获取键的值。INCR key
:将键的整数值增加1。DECR key
:将键的整数值减少1。INCRBY key increment
:将键的整数值增加指定的数值。DECRBY key decrement
:将键的整数值减少指定的数值。APPEND key value
:将值追加到键的原值末尾。
列表(List)操作
LPUSH key value [value ...]
:将一个或多个值插入到列表的头部。RPUSH key value [value ...]
:将一个或多个值插入到列表的尾部。LPOP key
:移除并返回列表的第一个元素。RPOP key
:移除并返回列表的最后一个元素。LRANGE key start stop
:获取列表指定范围内的元素。
集合(Set)操作
SADD key member [member ...]
:向集合添加一个或多个成员。SMEMBERS key
:返回集合中的所有成员。SREM key member [member ...]
:移除集合中的一个或多个成员。SISMEMBER key member
:判断成员是否是集合的成员。
有序集合(Sorted Set)操作
ZADD key score member [score member ...]
:向有序集合添加一个或多个成员,或者更新已存在成员的分数。ZRANGE key start stop [WITHSCORES]
:通过索引区间返回有序集合指定区间内的成员。ZREVRANGE key start stop [WITHSCORES]
:返回有序集中指定区间内的成员,通过索引,分数从高到低。ZREM key member [member ...]
:移除有序集合中的一个或多个成员。
哈希(Hash)操作
HSET key field value
:将哈希表中的字段赋值。HGET key field
:获取存储在哈希表中指定字段的值。HGETALL key
:获取在哈希表中指定键的所有字段和值。HDEL key field [field ...]
:删除一个或多个哈希表字段。
事务控制命令
MULTI
:标记一个事务块的开始。EXEC
:执行所有事务块内的命令。DISCARD
:取消事务,放弃执行事务块内的所有命令。
服务器控制命令
INFO [section]
:获取服务器的信息和统计。CONFIG GET parameter
:获取服务器配置参数。CONFIG SET parameter value
:设置服务器配置参数。