Springdata redis是否支持pop多个元素进行set操作?

Does Spring data redis support pop multiple elements for set operations?

如题,我发现jedis支持pop多个元素jedis commands source code

我查看了 spring-data-redis 项目的源代码,但找不到任何支持此方法的方法。

如何在 spring data redis 中弹出多个元素?

您可以使用 SetOperations#pop 弹出一个随机元素。只需定义一个 RedisTemplate

<bean id="jedisConnFactory"
      class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
      p:use-pool="true"/>

<bean id="redisTemplate"
      class="org.springframework.data.redis.core.RedisTemplate"
      p:connection-factory-ref="jedisConnFactory"/>

然后你可以将其注入 SetOperations

@Resource(name="redisTemplate")
private SetOperations<String, String> operation;

您可以在 Working with Objects through RedisTemplate

找到其他 RedisTemplate 个视图

你也可以使用JDK收集接口,见Support Classes

RedisSetCommands#spop(key, count) 及其在 SetOperations 中的对应项当前未在 Spring Data Redis 中实现。我已经打开 DATAREDIS-668 以添加对 count 选项的支持。

同时,您可以使用 RedisTemplate#execute 通过底层连接获取值,让模板负责资源处理。

redisTemplate.execute((RedisCallback<Set<String>>) conn -> {

  Jedis jedis = (Jedis) conn.getNativeConnection(); // access native driver 
  return jedis.spop(key, count);
});