1.简介
Redis(Remote Dictionary Server 远程字典服务器)是一个强大的缓存服务器,它提供了键值对存储、持久化、发布订阅等功能。Redis 在实际应用中有着广泛的应用场景,包括缓存、队列、计数器、会话存储等。
-
数据结构:
Redis 支持多种数据结构,如字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。每种数据结构都有对应的操作命令,可以对数据进行读写操作。 -
持久化:
Redis 提供了两种持久化方式:RDB 持久化和 AOF 持久化。RDB 持久化是将内存中的数据定期保存到磁盘上的快照文件中。AOF 持久化则通过记录每次写操作来实现持久化。 -
主从复制:
Redis 支持主从复制,可以将一个 Redis 服务器的数据复制到多个从服务器上。主从复制可以用于横向扩展读取能力和提高数据冗余性。 -
高性能特性:
Redis 使用内存作为数据存储介质,因此读写速度非常快。Redis 运行在单线程模型下,通过异步 I/O 和事件驱动方式来提高性能。 -
发布订阅:
Redis 支持发布订阅模式,客户端可以订阅一个或多个频道,接收特定消息的通知。发布订阅模式常用于消息队列、实时通信等场景。 -
事务:
Redis 支持事务功能,通过 MULTI 和 EXEC 命令可以执行一组命令,保证这组命令的原子性。 -
Lua 脚本:
Redis 支持使用 Lua 脚本执行复杂操作,将多个命令封装在一个脚本中原子执行。 -
缓存:
Redis 常被用作缓存数据库,可以提高访问速度和减轻数据库负担。
2.ubuntu环境安装
sudo apt-get install redis-server
ps -ef | grep redis
mysql工作在3306端口,redis工作在6379端口
3.redis使用方式
- 存储键值对
- 列表操作
- 阻塞式key读取,使用BRPOP命令
redis发布-订阅机制
Redis 提供了发布-订阅(Pub/Sub)模式,用于实现消息的发布者和订阅者之间的消息传递。
在发布-订阅模式中,有两种角色:
- 消息的发布者:负责向指定的频道(channel)发送消息。
- 消息的订阅者:可以订阅一个或多个频道,接收发布者发送到这些频道的消息。
发布者通过使用 PUBLISH
命令向指定的频道发送消息,语法如下:
PUBLISH channel message
channel
:指定的频道名称。message
:要发送的消息内容。
订阅者使用 SUBSCRIBE
命令来订阅一个或多个频道,语法如下:
SUBSCRIBE channel [channel ...]
channel
:一个或多个频道名称。
当发布者使用 PUBLISH
命令向某个频道发送消息时,所有订阅了该频道的订阅者都会收到该消息。
需要注意的是,Redis 的发布-订阅模式是一种消息广播机制,消息的发布者无法获知哪些订阅者已经接收到了消息。另外,订阅者在接收到消息后会立即将其打印出来,不能进行其他处理。
除了 PUBLISH
和 SUBSCRIBE
命令之外,Redis 还提供了其他用于管理订阅关系的命令,如 UNSUBSCRIBE
可以取消订阅指定频道,PSUBSCRIBE
可以使用模式匹配的方式订阅多个频道等。
这种发布-订阅模式常用于实时消息推送、聊天室、实时数据更新等场景,可以方便地实现多个客户端之间的消息传递和通信。
4.redis发布-订阅的客户端编程
Redis 支持多种不同的客户端编程语言,并有相应的客户端库可以用于与 Redis 服务器进行通信。一些常见的 Redis 客户端库和它们对应的编程语言包括:
- Java:Jedis、Lettuce
- Python:redis-py、Walrus
- PHP:phpredis、Predis
- C++:hiredis、cpp_redis
- Node.js:node_redis
- Go:redigo、go-redis
- Ruby:redis-rb
- C#:StackExchange.Redis
每种客户端库都提供了一组函数和方法,使得开发者能够方便地在相应的编程语言中与 Redis 进行交互,包括数据读写、事务操作、发布-订阅等功能。根据项目需求和喜好,可以选择适合自己项目的客户端库进行开发。
1.下载hiredis客户端
若没有git,使用sudo apt install git安装
sudo git clone https://github.com/redis/hiredis
2.进入hiredis目录,执行make
3.安装
sudo make install
4.更新共享库缓存
sudo ldconfig /usr/local/lib