Redis
目录
- Redis
- Redis 简介
- 关键特征
- Redis不同操作系统安装
- 在Linux上的安装:
- 在macOS上的安装:
- 在Windows上的安装:
 
- Redis 数据结构及特点
- 常用5种及示例:
- 其他结构
 
- 主要功能
- 总结
 
 
Redis 简介
Redis是一个开源的高性能键值对数据库,它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。这些数据结构可以作为数据库的字段来使用,使得Redis不仅可以存储简单的数据,还可以处理更复杂的数据集合。
 
关键特征
-  内存中数据存储:Redis主要将数据存储在内存中,这使得它能够提供极高的读写速度,通常在毫秒级别。 
-  持久化:尽管Redis是一个内存数据库,但它提供了持久化机制,可以将内存中的数据保存到磁盘上,以防止数据丢失。 
-  支持事务:Redis支持事务,可以确保一系列操作的原子性执行。 
-  丰富的数据类型:Redis不仅支持基本的数据类型,还支持列表、集合等复杂的数据结构,这使得它在处理各种数据场景时非常灵活。 
-  发布/订阅功能:Redis提供了发布/订阅模式,允许应用程序订阅消息通道,并接收发布到该通道的消息。 
-  主从复制:Redis支持主从复制,可以用于数据的备份和负载均衡。 
-  高可用性:通过哨兵系统(Sentinel)和集群(Cluster),Redis可以构建高可用性的系统。 
-  Lua脚本:Redis支持在服务器端执行Lua脚本,这可以用于实现复杂的数据处理逻辑。 
-  客户端库:Redis拥有丰富的客户端库,支持多种编程语言,使得在各种应用程序中集成Redis变得容易。 
-  性能监控:Redis提供了多种监控工具和命令,可以帮助管理员监控和优化数据库的性能。 
  
Redis不同操作系统安装
Redis的安装过程相对简单,但具体步骤可能会根据操作系统和环境的不同而有所变化。以下是在不同操作系统上安装Redis的一些通用步骤:
在Linux上的安装:
-  更新包管理器: - 对于基于Debian的系统(如Ubuntu),使用:sudo apt-get update
- 对于基于RPM的系统(如CentOS),使用:sudo yum check-update
 
- 对于基于Debian的系统(如Ubuntu),使用:
-  安装Redis: - 对于Debian/Ubuntu:sudo apt-get install redis-server
- 对于RPM/CentOS:sudo yum install redis
 
- 对于Debian/Ubuntu:
-  启动Redis服务: sudo systemctl start redis
-  设置Redis开机自启: sudo systemctl enable redis
-  验证Redis服务状态: sudo systemctl status redis
-  配置Redis(可选): - 编辑配置文件 /etc/redis/redis.conf以调整配置选项,如持久化设置、密码保护、最大内存限制等。
 
- 编辑配置文件 
在macOS上的安装:
-  使用Homebrew: - 如果尚未安装Homebrew,请先安装Homebrew:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 使用Homebrew安装Redis:brew install redis
 
- 如果尚未安装Homebrew,请先安装Homebrew:
-  启动Redis服务: - 使用Homebrew服务启动Redis:brew services start redis
 
- 使用Homebrew服务启动Redis:
-  验证Redis服务状态: brew services list | grep redis
在Windows上的安装:
-  下载Redis: - 访问Redis官网下载Windows版本:https://github.com/MicrosoftArchive/redis/releases
 
-  解压Redis: - 解压下载的Redis压缩包到一个合适的目录。
 
-  运行Redis服务器: - 打开命令提示符或PowerShell,导航到Redis目录,然后运行:redis-server.exe redis.conf
 
- 打开命令提示符或PowerShell,导航到Redis目录,然后运行:
-  使用Redis客户端: - 在另一个命令提示符窗口中,运行Redis客户端以连接到服务器:redis-cli.exe
 
- 在另一个命令提示符窗口中,运行Redis客户端以连接到服务器:
请注意,这些步骤提供了一个基本的安装指南。在生产环境中,您可能需要进行更多的配置和优化,例如设置密码保护、调整持久化选项、配置主从复制或Redis集群等。此外,某些操作系统可能需要您手动下载和编译Redis源代码。

Redis 数据结构及特点
常用5种及示例:
-  字符串(Strings): - 命令:SET,GET,INCR,DECR
- 示例:使用SET命令存储用户会话信息,GET命令检索会话信息。
 SET user:session:12345 "session_data" GET user:session:12345
- 命令:
-  列表(Lists): - 命令:LPUSH,RPUSH,LPOP,RPOP
- 示例:使用列表存储用户的最新消息,新消息插入到列表尾部。
 LPUSH user:12345:messages "new_message" RPOP user:12345:messages
- 命令:
-  集合(Sets): - 命令:SADD,SREM,SISMEMBER
- 示例:存储一个用户关注的话题集合。
 SADD user:12345:followed_topics "technology" SISMEMBER user:12345:followed_topics "technology"
- 命令:
-  有序集合(Sorted Sets): - 命令:ZADD,ZRANK,ZREVRANK
- 示例:存储用户排行榜,每个用户有一个分数。
 ZADD leaderboard 90 user:12345 ZRANK leaderboard user:12345
- 命令:
-  哈希(Hashes): - 命令:HSET,HGET,HMGET
- 示例:存储用户信息,如用户名、年龄等。
 HSET user:12345 username "JohnDoe" age 30 HGET user:12345 username
- 命令:

其他结构
-  位图(Bitmaps): - 命令:SETBIT,GETBIT
- 示例:使用位图记录用户的签到状态。
 SETBIT user:12345:sign_in 2024 1 # 2024年的第1天签到 GETBIT user:12345:sign_in 2024
- 命令:
-  超日志(HyperLogLogs): - 命令:PFADD,PFCOUNT
- 示例:统计独立访客数量。
 PFADD unique_visitors user:12345 PFCOUNT unique_visitors
- 命令:
-  地理空间(Geospatial): - 命令:GEOADD,GEODIST,GEORADIUS
- 示例:存储地理位置,并查询附近的地点。
 GEOADD places 39.9524 -75.1638 "PlaceA" GEORADIUS places 39.9524 -75.1638 10 km
- 命令:
-  发布/订阅(Pub/Sub): - 命令:PUBLISH,SUBSCRIBE
- 示例:发布消息到频道,订阅频道接收消息。
 PUBLISH news_updates "New update available" SUBSCRIBE news_updates
- 命令:
-  流(Streams): - 命令:XADD,XREAD
- 示例:使用流存储日志信息。
 XADD log_stream * timestamp 20240813T123000 message "System rebooted" XREAD COUNT 10 STREAMS log_stream
- 命令:
-  键空间通知(Key-space notifications): - 命令:CONFIG SET来启用通知
- 示例:订阅键空间通知以接收键的过期事件。
 CONFIG SET notify-keyspace-events Ex
- 命令:
-  脚本(Scripts): - 使用EVAL或EVALSHA执行Lua脚本
- 示例:执行Lua脚本来计算多个键的总和。
 EVAL "return redis.call('INCR',KEYS[1]) + redis.call('INCR',KEYS[2])" 2 key1 key2
- 使用

主要功能
-  内存中数据存储:Redis将数据存储在内存中,这意味着数据的读写速度非常快,通常在微秒级别,这使得Redis非常适合需要快速访问数据的应用程序。 
-  数据持久化:尽管数据存储在内存中,但Redis提供了数据持久化的选项,可以通过RDB快照或AOF日志来将内存中的数据保存到磁盘上,以防系统故障导致数据丢失。 
-  异步I/O:从Redis 6.0开始,Redis引入了多线程I/O处理,用于处理客户端的连接和请求的读写,这些操作是异步的,不会阻塞主线程的命令执行。 
-  存储会话数据:在Web应用程序中,用户的状态信息通常存储在服务器端的会话中。使用Redis,可以将用户的会话数据存储在内存中,键可以是用户的会话ID。 
  
总结
Redis的内存存储功能使其成为一个高性能的数据存储解决方案,适用于需要快速读写访问的用例,如缓存、会话存储、实时分析等。然而,由于内存的成本通常高于磁盘存储,使用Redis时也需要考虑成本效益。





![[C++][opencv]基于opencv实现photoshop算法可选颜色调整](https://i-blog.csdnimg.cn/direct/e99672cffc4f4999b41ebd88fe91636b.gif)













