发布于2021-05-29 21:49 阅读(1193) 评论(0) 点赞(23) 收藏(5)
Redis6之后增加了三种新的数据类型,Bitmaps、HyperLogLog、Geographic。
bitmaps(位图)严格上讲并不是新的一种数据类型,而是定义了字符串类型面向位的一组操作。通过在不同位上设置0或者1来存储不同的状态。
localhost:6379>setbit key offset value
offset为偏移量,表示要将哪一位设置成0/1。
localhost:6379>getbit key offset
offset为偏移量。返回值为0或者1。对没有设置的位都会返回0。
localhost:6379>bitcount key
或者是
localhost:6379>bitcount key 0, 1
这样可以获取字节
0和1中位为1的个数。
localhost:6379>bitop operate destkey key1 key2
operate可选类型为:and,or,xor等逻辑运算。
localhost:6379>bitpos key 0/1 [start] [end]
应用场景
是一种概率数据结构,用来统计一个集合中的基数。当数据的量特别大的时候,使用HyperLogLog就可以节省大量的内存,HyperLogLog使用的是固定的大小存储基数,为12KB,可以统计2^64个数据。Redis中统计出来的结果可能与实际的有1%的偏差。
localhost:6379>pfadd key value
基数增加成功会返回1,否则返回0.
localhost:6379>pfcount key
集合{1,2,3, 4, 1, 1, 1, 1} 统计出来的基数就是4。
localhost:6379>pfmerge key key1 key2
应用场景
地图的坐标类型,可以设置经纬度,查询,范围查询的等操作。
geoadd key 经度 纬度 地点
geopos key 地点
geodist key 地点1 地点2 显示单位
显示单位的可取值为:
km,m,mi(英里),ft(英尺)
。
georadius key 经度 纬度 半径长度 显示单位
<!-- 整合redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- spring2.x版本集成redis所需common-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
spring:
# redis配置
redis:
host: localhost
port: 6379
database: 0 # 数据库索引,默认为0
timeout: 1800000 # 连接超时时间
lettuce:
pool:
max-active: 20 # 连接池中的最大连接数,负值表示没有限制
max-wait: 1 # 连接池中的最大等待数
max-idle: 5 # 连接池中的最大空闲数
min-idle: 0 # 连接池中的最小空闲数
@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置key的序列化方式
redisTemplate.setKeySerializer(redisSerializer);
// 设置值的序列化方式
redisTemplate.setValueSerializer(redisSerializer);
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常的问题
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 配置序列化,解决乱码问题,过期时间设置为10分钟
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(600))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.disableCachingNullValues();
RedisCacheManager redisCacheManager = RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(configuration)
.build();
return redisCacheManager;
}
}
配置类的内容都差不多。
@Autowried
private RedisTemplate redisTemplate;
原文链接:https://blog.csdn.net/weixin_44184990/article/details/117330490
作者:程序员之神
链接:http://www.javaheidong.com/blog/article/207597/5d908b95ab5f08091976/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!