Pipelining(管道操作)
管道操作可以将多个独立的命令累积后一次性发送执行,然后同时返回所有命令的执行情况。通过管道操作可以减少网络通信次数,降低总的延迟。
客户端通过多次调用Send()方法发送命令到缓冲区,用Flush()方法将缓冲区的命令一次性发送到服务器,用Receive()方法按照FIFO顺序读取命令结果。
示例:
1 |
|
发布/订阅
Redis可以订阅即时消息,要订阅者先订阅,之后发布者发布内容才能收到。
如果事先没有订阅,那么发布的消息就会被丢弃,不会保存。
由于订阅者要阻塞等待,所以通过goroutine启动一个订阅者。
示例:
1 |
|
事务操作
事务操作可以保证一系列命令连续执行,不被别的请求打断。类似pipelining操作。
示例:
1 |
|
- 由于Redis是单线程的,所以执行lua脚本命令也可以被用来执行事务操作。
示例:
1 |
|
连接池
连接池如其名,可以帮助保持一定数量的连接,避免频繁建立、关闭连接带来的开销。
- 连接池一般初始化要在包的初始化函数init中,在程序退出时自动释放。
- 初始化时有很多参数,可以根据实际业务情况调整。
- 可以用Pool.Get()获得一个连接,记得用完要Close把连接放入连接池。
示例:
1 |
|