redis对大key实现分片存储
//公共分片数量,一旦开始使用不能更改这个值,否则会位置错乱 private static final Integer SHARD_NUM = 100; /** * 判断value是否在zSet * @param setKey * @param value * @return */ public boolean isMemberInSet(String setKey, String value) { return redisTemplate.opsForSet().isMember(setKey, value); } /** * Set对大数据量进行分片存储 * @param key 键 * @param value 值 * @param shardNum 分片数量 * @return */ public Long setShardSet(String key, String value,Integer shardNum) { shardNum = ObjectUtil.isNotEmpty(shardNum) ? shardNum : this.SHARD_NUM; int hash = value.hashCode() & Integer.MAX_VALUE; int shard = hash % shardNum; return this.setAdd(key + shard,value); } /** * 分片查询,值是否在Set中 * @param key 键 * @param value 值 * @param shardNum 分片数量 * @return */ public boolean isMemberInShardSet(String key, String value,Integer shardNum) { shardNum = ObjectUtil.isNotEmpty(shardNum) ? shardNum : this.SHARD_NUM; int hash = value.hashCode() & Integer.MAX_VALUE; int shard = hash % shardNum; return this.isMemberInSet(key + shard,value); }