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

网站分析与优化的文章怎么做网站推广

网站分析与优化的文章,怎么做网站推广,做微信小程序是不是不用做网站,南宁 百度网盘文章目录 写在文章开头详解Redisson基本数据类型基础配置字符串操作列表操作映射集阻塞队列延迟队列更多关于Redisson详解Redisson 中的原子类详解redisson中的发布订阅模型小结参考写在文章开头 Redisson是基于原生redis操作指令上进一步的封装,屏蔽了redis数据结构的实现细…

文章目录

    • 写在文章开头
    • 详解Redisson基本数据类型
      • 基础配置
      • 字符串操作
      • 列表操作
      • 映射集
      • 阻塞队列
      • 延迟队列
    • 更多关于Redisson
      • 详解Redisson 中的原子类
      • 详解redisson中的发布订阅模型
    • 小结
    • 参考

写在文章开头

Redisson是基于原生redis操作指令上进一步的封装,屏蔽了redis数据结构的实现细节,开发可以像操作普通java对象一样使用redis,而本文将针对Redisson中各种使用的数据结构和工具包使用及其实现进行详尽的分析,希望对你有帮助。

Hi,我是 sharkChili ,是个不断在硬核技术上作死的技术人,是 CSDN的博客专家 ,也是开源项目 Java Guide 的维护者之一,熟悉 Java 也会一点 Go ,偶尔也会在 C源码 边缘徘徊。写过很多有意思的技术博客,也还在研究并输出技术的路上,希望我的文章对你有帮助,非常欢迎你关注我的公众号: 写代码的SharkChili

同时也非常欢迎你star我的开源项目mini-redis:https://github.com/shark-ctrl/mini-redis

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注 “加群” 即可和笔者和笔者的朋友们进行深入交流。

详解Redisson基本数据类型

基础配置

使用redisson的方式比较简单,我们首先需要引入redisson的依赖包:

 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.23.5</version></dependency>

然后我们指明redis的ip、端口等配置即可:

spring.redis.host=localhost
spring.redis.port=6379

有了上述配置后,我们就可以快速完成redisson客户端配置:

@Configuration
public class RedissonConfig {@Autowiredprivate RedisProperties redisProperties;@Beanpublic RedissonClient redissonClient() {Config config = new Config();String redisUrl = String.format("redis://%s:%s", redisProperties.getHost() + "",redisProperties.getPort() + "");config.useSingleServer().setAddress(redisUrl);return Redisson.create(config);}}

后续在进行使用的时候,我们直接注入对应的客户端依赖即可:

@Autowiredprivate RedissonClient redissonClient;

字符串操作

和我们第一次使用redis一样,我们先用redisson完成一个字符串的键值对存储,对应的使用例子如下所示,我们只需拿到对应的test-keybucket即可进行读写操作:

 //生成 test-key 的bucketRBucket<Object> bucket = redissonClient.getBucket("test-key");//查看对应的bucket是否存在if (ObjUtil.isEmpty(bucket.get())) {//基于set指令进行插入bucket.set("test-value");//尝试通过get获取值Object value = bucket.get();log.info("value:{}", value);}

对于RBucket对象的setget操作本质上都是基于redis字符串操作指令setget的一层封装,在我们调用getBucket获取对应keybucket的时候,redisson会基于当前客户端的连接信息和bucket键进行一次封装得到一个test-keybucket对象:

在这里插入图片描述

对应的我们给出getBucket的底层实现,可以看到逻辑操作就是封装维护如下这份信息:

  1. 编码器和解码器codec,默认情况下是Kryo5Codec
  2. 执行命令的commandExecutor,该对象记录redis客户端的基本信息。
  3. name也就是我们要操作的key的信息,也就是字符串key
public RedissonObject(Codec codec, CommandAsyncExecutor commandExecutor, String name) {this.codec = codec;this.commandExecutor = commandExecutor;if (name == null) {throw new NullPointerException("name can't be null");}setName(name);}

然后就是执行set指令了,我们都知道redisson是基于Netty封装的redis操作工具,所以在进行redis操作时涉及了大量优秀的异步读写涉及,我们以上文set操作为例,实际上其底层执行时做了如下几件事:

  1. 基于传入的key,也就是我们的test-key定位到slot地址。
  2. 获取到上一步封装的编码器codec。
  3. 本次执行是set请求,所以如果我们采用主从模式进行部署,这一步是会从主库获取连接信息,因为我们就配置了一台redis,所以默认直接从默认库获取连接。
  4. 基于连接信息发送指令。
  5. 完成操作后归还连接。

这些步骤完成后,操作结果会被封装为Future对象,如果需要直到执行结果,我们调用get即可知晓处理情况:

在这里插入图片描述

对应的我们也给出set的源码入口,如笔者所说其底层就是一个set操作的异步调用setAsync,通过该回调会得到一个RFuture对象,通过get即可获取结果:

 @Overridepublic void set(V value) {//基于setAsync提交异步set操作,然后通过get获取执行结果get(setAsync(value));}

对应的我们步入setAsync可以看到它会拿着我们上一步初始化所得来的key名称、编码器、set操作指令对象以及编码后的value值通过commandExecutor进行异步写入到redis服务端:

@Overridepublic RFuture<Void> setAsync(V value) {//......//基于各种信息通过commandExecutor进行异步提交return commandExecutor.writeAsync(getRawName(), codec
http://www.dinnco.com/news/25996.html

相关文章:

  • wordpress页面相册seo教程搜索引擎优化入门与进阶
  • 尚未设置自定义缩略图wordpressseo关键词优化是什么意思
  • 太原网站优化教程百度网络营销中心客服电话
  • 小公司网站如何做网络营销有哪几种方式
  • 公司建设网站需要什么条件中国北京出啥大事了
  • 百度首页网站推广多少钱一年网络营销运营策划
  • 网站源码风险html友情链接代码
  • 肃州区建设局网站bt兔子磁力搜索
  • h5页面制作代码网络营销郑州优化推广公司
  • 美国生物等效性如果做的网站厦门谷歌推广
  • 做属于自己公司的网站移动慧生活app下载
  • php婚庆网站源码上海seo培训
  • 个人做理财网站廊坊seo优化排名
  • 哪里有免费的ppt模板下载网站长沙专业网站制作
  • 上海做网站比较好的公司有哪些百度搜索排名优化哪家好
  • 怀化灵知网站建设班级优化大师app下载
  • 网页游戏排行榜前十知乎天津的网络优化公司排名
  • 济南传承网站建设公司seo标签怎么优化
  • 如何做亚马逊备案的网站手机app推广平台
  • 网站定制开发费用多少网站关键词优化推广哪家好
  • 荥阳做网站推广广州seo网站排名
  • 成都网站登记备案查询优质网站
  • 网站运营与管理的心得体会教你如何快速建站
  • 洛阳青峰网络让人去培训宁波seo网络推广咨询热线
  • 合肥 网站建设网站优化什么意思
  • 有哪些网站主页做的比较好看百分百营销软件
  • 政府网站建设管理规范宁波seo软件
  • 网页设计培训主要经营范围seo信息是什么
  • 网站及app建设网站流量排名查询工具
  • 如何用网站做苹果app新手学百度竞价要多久