REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 具有以下性质:
- 内存数据库:Redis 将所有数据存储在内存中,因此读写速度非常快。但是,由于内存容量有限,需要设置过期时间或定期持久化到磁盘上。
- 键值数据库:Redis 的数据模型使用键值对来存储数据,键和值都可以是字符串类型,因此可以存储各种各样的数据,如字符串、数字、列表、集合、哈希等。
- 支持多种数据结构:Redis 不仅支持基础数据类型,还支持列表、集合、有序集合、哈希表等复杂数据结构,并提供了相应的命令进行操作。
- 高效快速:Redis 可以处理高并发请求,能够进行快速读写操作,且具有原子性、事务性和持久化等特点,使其成为一个高效的缓存和数据存储解决方案。
- 分布式:Redis 支持分布式架构,可以通过搭建 Redis 集群实现数据的扩展和负载均衡。
- 开源免费:Redis 是一款开源的软件,拥有丰富的社区资源和生态系统,并且可以免费使用。
Redis 支持多种数据类型,常用的包括:
- 字符串(String):最基本的数据类型,可以存储字符串、整数或浮点数。
- 哈希表(Hash):由字段和值组成的无序散列表,适合存储对象。
- 列表(List):按照插入顺序排序的字符串列表。
- 集合(Set):无序且不重复的字符串集合。
- 有序集合(Sorted Set):与集合类似,但每个成员都关联着一个浮点数值,称为分值(score),并按照分值排序。
除了以上常用的数据类型,Redis 还支持一些其他的特殊数据类型,如地理位置信息(Geo)、位图(Bitmap)等。选择正确的数据类型可以提高 Redis 的性能,并且使代码更加简洁易读。
Redis 的通用命令:
命令 | 描述 |
SELECT index |
选择指定索引的数据库 |
FLUSHDB |
删除当前数据库中的所有 key |
FLUSHALL |
删除所有数据库中的所有 key |
INFO [section] |
获取 Redis 服务器的各种信息和统计数值 |
PING |
检查 Redis 服务器是否运行 |
TIME |
返回当前服务器时间 |
AUTH password |
对 Redis 服务器进行身份验证 |
QUIT |
关闭与当前客户端的连接 |
除了上述命令外,Redis 还提供了许多其他的命令,如事务、发布订阅、Lua 脚本等。这些特殊的命令有些是针对某个特定功能而设计的,有些则是为了提高 Redis 效率而设计的。需要根据具体情况选择使用。
键值操作
命令 | 描述 |
SET key value |
设置指定 key 的值 |
GET key |
获取指定 key 的值 |
DEL key |
删除指定 key |
EXISTS key |
判断指定 key 是否存在 |
INCR key |
将指定 key 的值加 1 |
DECR key |
将指定 key 的值减 1 |
KEYS pattern |
查找所有符合给定模式 pattern 的 key |
RANDOMKEY |
从当前数据库中随机返回一个 key |
RENAME old_key new_key |
将 key 重命名为 new_key |
TTL key |
获取指定 key 的过期时间 |
列表操作
命令 | 描述 |
LPUSH key value |
在列表左侧插入一个或多个元素 |
RPUSH key value |
在列表右侧插入一个或多个元素 |
LPOP key |
弹出并返回列表最左侧的元素 |
RPOP key |
弹出并返回列表最右侧的元素 |
LINDEX key index |
获取列表中第 index 个元素 |
LRANGE key start end |
获取列表中从 start 到 end 索引范围内的元素 |
LLEN key |
获取列表长度 |
哈希表操作
命令 | 描述 |
HSET key field value |
设置哈希表 key 中的一个字段 field 的值为 value |
HGET key field |
获取哈希表 key 中指定 field 的值 |
HGETALL key |
获取哈希表 key 中所有字段和对应的值 |
HDEL key field [field ...] |
删除哈希表 key 中的一个或多个字段 |
集合操作
命令 | 描述 |
SADD key member [member ...] |
向集合 key 添加一个或多个成员 |
SMEMBERS key |
获取集合 key 中的所有成员 |
SREM key member [member ...] |
从集合 key 中删除一个或多个成员 |
SCARD key |
获取集合 key 的基数(集合中元素的数量) |
SISMEMBER key member |
判断 member 是否是集合 key 的成员 |
SRANDMEMBER key [count] |
从集合 key 中返回一个或多个随机元素 |
有序集合
命令 | 描述 |
ZRANGE key start stop [WITHSCORES] |
获取有序集合 key 中指定范围内的成员,按照分值从小到大排序 |
ZREVRANGE key start stop [WITHSCORES] |
获取有序集合 key 中指定范围内的成员,按照分值从大到小排序 |
ZCARD key |
获取有序集合 key 中成员的数量 |
ZCOUNT key min max |
获取有序集合 key 中分值在 min 和 max 之间的成员数量 |
ZSCORE key member |
获取有序集合 key 中指定成员的分值 |
ZREM key member [member ...] |
删除有序集合 key 中的一个或多个成员 |
ZINCRBY key increment member |
将有序集合 key 中指定成员的分值增加 increment |
ZRANK key member |
获取有序集合 key 中指定成员的排名(按照分值从小到大排序) |
ZREVRANK key member |
获取有序集合 key 中指定成员的排名(按照分值从大到小排序) |
想知道更多命令可通过以下网站:
官网:Redis
菜鸟教程:Redis 教程 | 菜鸟教程
初读不知诗中意,在闻已是诗中人