Spring Data Redis(Pipeling)
来源:互联网 发布:手机淘宝购买运费险 编辑:程序博客网 时间:2024/06/12 19:53
Pipelining
管道
Redis 提供了对pipelining 管道的支持。管道作用于两点:发送多个命令到服务端而不用等回应;在一个单独的步骤里读取所有的应答。当需要连续发送多个命令时,如连续添加多个元素到同一个集合,使用管道可以提高性能。
Spring Data Redis 提供了多个RedisTemplate 方法,使得可以使用管道来执行命令。如果你不关心管道操作的结果,你可以使用标准的execute 方法,并为管道参数传递true。executePipelined 这个方法可以在管道中执行RedisCallback 或者 SessionCallback,并返回结果。
代码示例如下 :
//pop a specified number of items from a queueList<Object> results = stringRedisTemplate.executePipelined( new RedisCallback<Object>() { public Object doInRedis(RedisConnection connection) throws DataAccessException { StringRedisConnection stringRedisConn = (StringRedisConnection)connection; for(int i=0; i< batchSize; i++) { stringRedisConn.rPop("myqueue"); } return null; }});
在上面的示例中,通过一个管道来执行操作,将大量的元素从一个队列中right pop 出来。结果List 中包含了所有弹出的内容。RedisTemplate 使用它的各种(值、哈希键、哈希值)序列化器,在返回之前将所有的结果进行反序列化。所以在上面的示例中返回的所有信息都是Strings。还有另外一个executePipelined 方法,可以为管道的结果传递一个自定义的序列化器。
注意,RedisCallback 返回的结果值必须为 null,管道命令返回的结果中会丢弃该值。
在1.1版本中,RedisConnection 的closePipeline 方法做了一个重大的改变。以前该方法从连接器直接返回管道操作的结果。这意味着这些数据类型和RedisConnection方法返回的是不同的。例如,zAdd方法返回一个boolean类型来标识一个元素已经被添加到sorted set中了。大多数连接器返回一个long类型的值,而由Spring Data Redis来执行转换。另外一个普遍的不同点是,大多数的连接器在执行完操作(如:set)后会返回一个应答状态(通常是OK字符串)。这些应答会被Spring Data Redis丢弃。在1.1之前,closePipeline 的结果不会被转化。如果这些改变破坏了你的应用,你可以在你的RedisConnectionFactory 中设置convertPipelineAndTxResults 为false 来disable 掉这些行为。
阅读全文
0 0
- Spring Data Redis(Pipeling)
- redis:spring-data-redis
- redis Jredis spring-data-redis
- spring data redis 操作redis
- Spring Data Redis (Redis Support)
- Spring Data Redis(Redis Transactions)
- Spring Data Redis(Redis Scripting)
- Spring Data Redis(Redis Cluster)
- Spring Data Redis(Redis Repositories)
- spring data redis 操作redis
- SPRING DATA - REDIS配置
- spring data redis试用
- SPRING DATA - REDIS配置
- SPRING DATA - REDIS配置
- Spring-Data-Redis特性
- Spring Data Redis
- spring-data-redis 使用
- spring-data集成redis
- Latex写作的入门使用
- HTML 2017.7.16
- nodejs密码加密中生成随机数
- Dating with girls(2) HDU
- 问题
- Spring Data Redis(Pipeling)
- Android BLE控制端
- 浅析有关链表的带环问题
- 欢迎使用CSDN-markdown编辑器
- 1001 Robberies
- 常见CSS布局
- Spark学习
- 高级MVP架构封装演变全过程
- sublime-text3按tab跳出括号