当前位置: 首页 > news >正文

网站添加支付宝个人建网站教程

网站添加支付宝,个人建网站教程,wordpress 适配 手机,29网站建设全部1.Redis面试题-缓存穿透,缓存击穿,缓存雪崩 1 穿透: 两边都不存在(皇帝的新装) (返回空值)(互斥锁)(黑名单) (布隆过滤器) 2 击穿:一个或多个热…

1.Redis面试题-缓存穿透,缓存击穿,缓存雪崩

1 穿透: 两边都不存在(皇帝的新装) (返回空值)(互斥锁)(黑名单) (布隆过滤器)

2 穿:一个或多个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热

3 雪崩:大量key同时失效 (避免大量的key同一时间失效,错峰

【大厂面试题】缓存穿透清晰讲解!看完不会,你来打我 # 编程 # java # java面试 # 面试题 # 开发 https://v.douyin.com/irdtam1Q/ 复制此链接,打开Dou音搜索,直接观看视频!

2.Spring是如何集成Redis的?

Spring Data Redis

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency>

3.高级封装

4.Redis配置

Spring.Redis常用配置参数有哪些。

# Redis服务器地址
spring.redis.host=10.1.30.222
# Redis数据库索引(默认为0)
spring.redis.database=0 
# Redis服务器连接端口
spring.redis.port=6379 
# Redis服务器连接密码(默认为空)
#spring.redis.password=
## 连接超时时间(毫秒)
spring.redis.timeout=30000
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=1
#连接池中最大空闲等待时间,3s没有活干的时候直接驱逐该链接
spring.redis.lettuce.pool.min-evictable-idle-time-millis = 3000
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1

5.StringRedisTemplate

String

@Autowiredprivate StringRedisTemplate stringRedisTemplate;private final String key = "zhengzhou";public void test() {stringRedisTemplate.opsForValue().set(key, "我的家乡", 30, TimeUnit.SECONDS);String value = stringRedisTemplate.opsForValue().get(key);System.out.println(value);}

Hash

@Autowiredprivate StringRedisTemplate stringRedisTemplate;private  final  String key ="zhouxingxing";public void  test(){stringRedisTemplate.opsForHash().put(key,"20220325","郑州");stringRedisTemplate.opsForHash().put(key,"20220326","洛阳");List<Object> values = stringRedisTemplate.opsForHash().values(key);for (Object value:values){System.out.println(value);}}

List

@Autowiredprivate StringRedisTemplate stringRedisTemplate;private  final  String key ="onewayroad";void  test(){stringRedisTemplate.opsForList().leftPush(key,"周星星");stringRedisTemplate.opsForList().leftPush(key,"张敏");stringRedisTemplate.opsForList().leftPush(key,"李大锤");String value = stringRedisTemplate.opsForList().rightPop(key);System.out.println(value);}
}@Testvoid test6() {// 如果一些原生命令,spring 没有给我们封装,redisTemplate.execute(new RedisCallback)while (true){System.out.println("开始一轮监听");List<byte[]> rawResults = redisTemplateProduct.execute(new RedisCallback<List<byte[]>>() {@Overridepublic List<byte[]> doInRedis(RedisConnection connection) throws DataAccessException {return connection.bRPop(5,"product.hot".getBytes());}});if(ObjUtil.isNotEmpty(rawResults)){byte[] rawKey = rawResults.get(0);byte[] rawValue = rawResults.get(1);Product product = (Product)redisTemplateProduct.getValueSerializer().deserialize(rawValue);System.out.println(product);}}

Set

@Component
public class SetDemo {@Autowiredprivate StringRedisTemplate stringRedisTemplate;private final  String zhouxingxing ="zhouxingxing";private  final  String zhangmin = "zhangming";public void  test(){//添加周星星同学感兴趣的科目stringRedisTemplate.opsForSet().add(zhouxingxing,"语文");stringRedisTemplate.opsForSet().add(zhouxingxing,"数学");stringRedisTemplate.opsForSet().add(zhouxingxing,"数学");//添加张敏同学感兴趣的科目stringRedisTemplate.opsForSet().add(zhangmin,"数学");stringRedisTemplate.opsForSet().add(zhangmin,"英语");//获取两位同学共同感兴趣的科目Set<String> values = stringRedisTemplate.opsForSet().intersect(zhouxingxing, zhangmin);System.out.println("周星星和张敏共同感兴趣的科目为:");for(String value : values){System.out.println(value);}}
}

ZSet

@Component
public class ZSetDemo {@Autowiredprivate StringRedisTemplate stringRedisTemplate;private final  String key ="zhouxingxing";public void  test(){//添加周星星同学成绩stringRedisTemplate.opsForZSet().add(key,"语文",98);stringRedisTemplate.opsForZSet().add(key,"数学",87);stringRedisTemplate.opsForZSet().add(key,"英语",75);//获取分数最高的成绩ZSetOperations.TypedTuple<String> values = stringRedisTemplate.opsForZSet().popMax(key);//打印值System.out.println("周星星最好成绩科目是:"+values.getValue());System.out.println("周星星最好成绩:"+values.getScore());}
}

6.RedisTemplate<T,V>泛型约束

6.1泛型约束的使用

@Component
public class RedisTemplateDemo {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Resourceprivate RedisTemplate<String, User> redisTemplate;@Resource(name="redisTemplate")private ValueOperations<String,User> valueOperations;private final String key = "useris#01";public void test() {User user = User.builder().id(1).name("李四").build();redisTemplate.opsForValue().set(key,user );User value = redisTemplate.opsForValue().get(key);valueOperations.set(key,user );User value2 = valueOperations.get(key);System.out.println(value);}
}

6.2乱码的问题

        JdkSerializationRedisSerializer  serializer = new JdkSerializationRedisSerializer();byte[] serialize = serializer.serialize("user.01");System.out.println(new String(serialize));

6.3自定义序列化工具

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper objectMapper = new ObjectMapper();// 序列化的时候,自动推断类型,将类型信息作为属性写入JSON// 反序列化时候,根据类型的全类名,序列化成对应的对象实例objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);//普通key序列化工具template.setKeySerializer(RedisSerializer.string());template.setValueSerializer(jackson2JsonRedisSerializer);//hash 小key 序列化工具template.setHashKeySerializer(RedisSerializer.string());template.setHashValueSerializer(jackson2JsonRedisSerializer);return template;}}

7. 直接使用ListOperations、ValueOperations、SetOperations、ZSetOperations、HashOperations接口

在Spring Data Redis中,提供了丰富的模板操作接口,

ListOperationsValueOperationsSetOperationsZSetOperationsHashOperations

这些都是RedisTemplate的子接口,用于针对不同类型的Redis数据结构进行操作

REDIS 注释 redistemplate注入_mob6454cc6f4a4e的技术博客_51CTO博客

http://www.yayakq.cn/news/9870/

相关文章:

  • 响应式网站demo戴南做网站
  • 万网是做网站的吗手机资讯类网站模板
  • 搭建正规网站深圳宝安区很穷吗
  • 遂溪手机网站建设临沂市建设职工中等专业学校校长
  • 黑龙江网站备案查询深圳手机建站模板
  • jsp开发网站衡阳市做网站
  • 电子商务网站济宁建设网站首页
  • asp资源下载网站上海市住房和城乡建设厅
  • 大连网站开发公司源码论坛有哪些
  • 网站建设 html5wordpress免登录发文章
  • 政协网站建设要求wordpress网站排名
  • 沈阳市住房和城乡建设厅网站郑州seo网络营销
  • 医疗手机网站动画设计专业要艺考吗
  • 如何提升网站的排名wap搜索引擎
  • 做a高清视频在线观看网站wordpress 小工具插件
  • 网站开发方法有哪些网站如何备案icp
  • 中国工程建设协会网站用群晖的wordpress
  • 域名注册网站制作深圳福田建设局网站首页
  • 长沙做旅游网站公司怎么用凡科做网站
  • 深圳网站设计网站建设哪个好谷歌浏览器网页截图快捷键
  • 域名访问不了织梦网站wordpress 仿百度百家
  • 中国电力建设集团网站济南建设集团
  • 人人做全免费网站企业培训图片
  • 网页设计与网站建设论述题校园网站建设考核
  • 潍坊做网站win2008r做网站
  • 做音频主播的网站网页ui设计培训
  • 网站建设评比文章网站建设需要固定ip地址吗
  • 宝安高端网站设计怎么样品牌网站建设 蝌4蚪小
  • 南昌知名的网站建设公司和幼儿做网站爱
  • 做教育的网站有哪些内容吗网站建设一般流程