Redis

发布于:2024-05-07 ⋅ 阅读:(20) ⋅ 点赞:(0)

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:设置服务器配置参数。