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

中国建设银行网站北京网点金城武重庆森林经典台词

中国建设银行网站北京网点,金城武重庆森林经典台词,做企业官网用什么开发,建设网站的功能及目的是什么一、摘要什么是 Redisson#xff1f;来自于官网上的描述内容如下#xff01;Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端#xff08;In-Memory Data Grid#xff09;。它不仅提供了一系列的 redis 常用数据结构命令服务#xff0c;还提供了许多分布…一、摘要什么是 Redisson来自于官网上的描述内容如下Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端In-Memory Data Grid。它不仅提供了一系列的 redis 常用数据结构命令服务还提供了许多分布式服务例如分布式锁、分布式对象、分布式集合、分布式远程服务、分布式调度任务服务等等。相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端Redisson 提供的功能更加高端和抽象逼格高更多功能特性和开发文档说明可用移步github进行获取访问地址如下https://github.com/redisson/redisson/wiki/目录接下来我们就一起来聊一下如何使用 Redisson 操作 Redis 中的字符串、哈希、列表、集合、有序集合以及布隆过滤器和分布式锁等功能。二、Redisson2.1、基本使用跟过去一样首先创建一个 maven 项目添加Redisson依赖包。dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.13.6/version /dependency单机环境下简单样例如下public class RedissonMain {public static void main(String[] args) {Config config new Config();config.useSingleServer().setAddress(redis://127.0.0.1:6379).setPassword(123456).setDatabase(0);//获取客户端RedissonClient redissonClient Redisson.create(config);//获取所有的keyredissonClient.getKeys().getKeys().forEach(key - System.out.println(key));//关闭客户端redissonClient.shutdown();} }ps创建 RedissonClient 对象实例的方式多钟多样可以直接通过在代码中设置 Redis 服务的相关参数创建也可以通过加载 JSON 格式、 YAML 格式或者 Spring XML 配置文件来创建详细的参数配置可用移步上文提到的 Redisson 开发文档。2.2、字符串操作Redisson 支持通过RBucket对象来操作字符串数据结构通过RBucket实例可以设置value或设置value和有效期简单样例如下//字符串操作 RBucketString rBucket redissonClient.getBucket(strKey); // 设置value和key的有效期 rBucket.set(张三, 30, TimeUnit.SECONDS); // 通过key获取value System.out.println(redissonClient.getBucket(strKey).get());2.3、对象操作Redisson 支持将对象作为value存入redis被存储的对象事先必须要实现序列化接口Serializable否则会报错简单样例如下public class Student implements Serializable {private Long id;private String name;private Integer age;//set、get...Overridepublic String toString() {return Student{ id id , name name \ , age age };} }//Student对象 Student student new Student(); student.setId(1L); student.setName(张三); student.setAge(18);//对象操作 RBucketStudent rBucket redissonClient.getBucket(objKey); // 设置value和key的有效期 rBucket.set(student, 30, TimeUnit.SECONDS); // 通过key获取value System.out.println(redissonClient.getBucket(objKey).get());2.4、哈希操作Redisson 支持通过RMap对象来操作哈希数据结构简单样例如下//哈希操作 RMapString, String rMap redissonClient.getMap(mapkey); // 设置map中key-value rMap.put(id, 123); rMap.put(name, 赵四); rMap.put(age, 50);//设置过期时间 rMap.expire(30, TimeUnit.SECONDS); // 通过key获取value System.out.println(redissonClient.getMap(mapkey).get(name));2.5、列表操作Redisson 支持通过RList对象来操作列表数据结构简单样例如下//字符串操作 RListStudent rList redissonClient.getList(listkey);Student student1 new Student(); student1.setId(1L); student1.setName(张三); student1.setAge(18); rList.add(student1);Student student2 new Student(); student2.setId(2L); student2.setName(李四); student2.setAge(19); rList.add(student2);//设置过期时间 rList.expire(30, TimeUnit.SECONDS); // 通过key获取value System.out.println(redissonClient.getList(listkey));2.6、集合操作Redisson 支持通过RSet对象来操作集合数据结构简单样例如下//字符串操作 RSetStudent rSet redissonClient.getSet(setkey);Student student1 new Student(); student1.setId(1L); student1.setName(张三); student1.setAge(18); rSet.add(student1);Student student2 new Student(); student2.setId(2L); student2.setName(李四); student2.setAge(19); rSet.add(student2);//设置过期时间 rSet.expire(30, TimeUnit.SECONDS); // 通过key获取value System.out.println(redissonClient.getSet(setkey));2.6、有序集合操作Redisson 支持通过RSortedSet对象来操作有序集合数据结构在使用对象来存储之前实体对象必须先实现Comparable接口并重写比较逻辑否则会报错简单样例如下public class Student implements Serializable, ComparableStudent {private Long id;private String name;private Integer age;//get、set.....Overridepublic String toString() {return Student{ id id , name name \ , age age };}Overridepublic int compareTo(Student obj) {return this.getId().compareTo(obj.getId());} }//有序集合操作 RSortedSetStudent sortSetkey redissonClient.getSortedSet(sortSetkey);Student student1 new Student(); student1.setId(1L); student1.setName(张三); student1.setAge(18); sortSetkey.add(student1);Student student2 new Student(); student2.setId(2L); student2.setName(李四); student2.setAge(19); sortSetkey.add(student2);// 通过key获取value System.out.println(redissonClient.getSortedSet(sortSetkey));2.7、布隆过滤器布隆过滤器Bloom Filter是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多缺点是有一定的误识别率和删除困难。Redisson 支持通过RBloomFilter对象来操作布隆过滤器简单样例如下RBloomFilter rBloomFilter redissonClient.getBloomFilter(seqId); // 初始化预期插入的数据量为10000和期望误差率为0.01 rBloomFilter.tryInit(10000, 0.01); // 插入部分数据 rBloomFilter.add(100); rBloomFilter.add(200); rBloomFilter.add(300); //设置过期时间 rBloomFilter.expire(30, TimeUnit.SECONDS); // 判断是否存在 System.out.println(rBloomFilter.contains(300)); System.out.println(rBloomFilter.contains(200)); System.out.println(rBloomFilter.contains(999));2.8、分布式自增IDID 是数据的唯一标识传统的做法是利用 UUID 和数据库的自增 ID。但由于 UUID 是无序的不能附带一些其他信息因此实际作用有限。随着业务的发展数据量会越来越大需要对数据进行分表甚至分库。分表后每个表的数据会按自己的节奏来自增这样会造成 ID 冲突因此这时就需要一个单独的机制来负责生成唯一 IDredis 原生支持生成全局唯一的 ID。简单样例如下final String lockKey aaaa; //通过redis的自增获取序号 RAtomicLong atomicLong redissonClient.getAtomicLong(lockKey); //设置过期时间 atomicLong.expire(30, TimeUnit.SECONDS); // 获取值 System.out.println(atomicLong.incrementAndGet());2.9、分布式锁Redisson 最大的亮点也是使用最多的功能就是提供了强大的分布式锁实现特点是使用简单、安全简单使用样例如下Config config new Config(); config.useSingleServer().setAddress(redis://127.0.0.1:6379).setPassword(123456).setDatabase(0); RedissonClient redissonClient Redisson.create(config); //获取锁对象实例 final String lockKey abc; RLock rLock redissonClient.getLock(lockKey);try {//尝试5秒内获取锁如果获取到了最长60秒自动释放boolean res rLock.tryLock(5L, 60L, TimeUnit.SECONDS);if (res) {//成功获得锁在这里处理业务System.out.println(获取锁成功);} } catch (Exception e) {System.out.println(获取锁失败失败原因 e.getMessage()); } finally {//无论如何, 最后都要解锁rLock.unlock(); }//关闭客户端 redissonClient.shutdown();以上是单机环境下的分布式锁实现逻辑如果是集群环境下应该如何处理呢Redisson 提供RedissonRedLock操作类也被称为红锁实现原理简单的总结有以下几点1.如果有多个 redis 集群的时候当且仅当从大多数N/21比如有3个 redis 节点那么至少有2个节点的 Redis 节点都取到锁并且获取锁使用的总耗时小于锁失效时间时锁才算获取成功2.如果获取失败客户端会在所有的 Redis 实例上进行解锁操作3.集群环境下redis 服务器直接不存在任何复制或者其他隐含的分布式协调机制否则会存在实效的可能RedissonRedLock简单使用样例如下Config config1 new Config(); config1.useSingleServer().setAddress(redis://192.168.3.111:6379).setPassword(a123456).setDatabase(0); RedissonClient redissonClient1 Redisson.create(config1);Config config2 new Config(); config2.useSingleServer().setAddress(redis://192.168.3.112:6379).setPassword(a123456).setDatabase(0); RedissonClient redissonClient2 Redisson.create(config2);Config config3 new Config(); config3.useSingleServer().setAddress(redis://192.168.3.113:6379).setPassword(a123456).setDatabase(0); RedissonClient redissonClient3 Redisson.create(config3);//获取多个 RLock 对象 final String lockKey abc; RLock lock1 redissonClient1.getLock(lockKey); RLock lock2 redissonClient2.getLock(lockKey); RLock lock3 redissonClient3.getLock(lockKey);//根据多个 RLock 对象构建 RedissonRedLock 最核心的差别就在这里 RedissonRedLock redLock new RedissonRedLock(lock1, lock2, lock3);try {//尝试5秒内获取锁如果获取到了最长60秒自动释放boolean res redLock.tryLock(5L, 60L, TimeUnit.SECONDS);if (res) {//成功获得锁在这里处理业务System.out.println(获取锁成功);} } catch (Exception e) {System.out.println(获取锁失败失败原因 e.getMessage()); } finally {//无论如何, 最后都要解锁redLock.unlock(); }更加详细的分布式锁实现原理分析可以移步到这个地址查阅。https://blog.csdn.net/asd051377305/article/details/1083844902.10、集群模式以上介绍的都是单机模式如果是集群环境我们可以采用如下方式进行配置Config config new Config(); config.useClusterServers().setScanInterval(2000) // 集群状态扫描间隔时间单位是毫秒//可以用rediss://来启用SSL连接.addNodeAddress(redis://127.0.0.1:7000, redis://127.0.0.1:7001).addNodeAddress(redis://127.0.0.1:7002);RedissonClient redisson Redisson.create(config);2.11、哨兵模式哨兵模式参数配置方式如下Config config new Config(); config.useSentinelServers().setMasterName(mymaster)//可以用rediss://来启用SSL连接.addSentinelAddress(127.0.0.1:26389, 127.0.0.1:26379).addSentinelAddress(127.0.0.1:26319);RedissonClient redisson Redisson.create(config);2.12、主从模式主从模式参数配置方式如下Config config new Config(); config.useMasterSlaveServers()//可以用rediss://来启用SSL连接.setMasterAddress(redis://127.0.0.1:6379).addSlaveAddress(redis://127.0.0.1:6389, redis://127.0.0.1:6332, redis://127.0.0.1:6419).addSlaveAddress(redis://127.0.0.1:6399);RedissonClient redisson Redisson.create(config);三、小结在前几篇文章中我们详细的介绍了 Jedis、Lettuce我们不禁会发出一个疑问Redisson和Jedis、Lettuce有什么区别现在我们再回头来总结一番JedisRedis 官方推出的用于通过 Java 连接 Redis 客户端的一个工具包它提供了全面的类似于 Redis 原生命令的支持是目前使用最广的一款 java 客户端。Lettuce一个可扩展的线程安全的 Redis 客户端通讯框架基于 Netty 开发支持高级的 Redis 特性比如哨兵集群管道自动重新连接等特性。从 Spring Boot 2.x 开始 Lettuce 已取代 Jedis 成为首选 Redis 的客户端。Redisson一款架设在 Redis 基础上通讯基于 Netty 的综合的、新型的中间件是企业级开发中使用 Redis 的最佳范本。总结下来Jedis 把 Redis 命令封装的非常全面Lettuce 则进一步丰富了 Api支持 Redis 各种高级特性。但是两者并没有进一步深化只给了你操作 Redis 数据库的工具而 Redisson 则是基于 Redis、Lua 和 Netty 建立起了一套的分布式解决方案比如分布式锁的实现分布式对象的操作等等。在实际使用过程中Lettuce Redisson组合使用的比较多两者相铺相成。关于分布式锁实现的应用生产环境推荐尽量采用单点环境来实现基本上解决绝大部分的分布式锁问题如果当前服务的环境确实很复杂可以采用RedissonRedLock来实现。
http://www.dnsts.com.cn/news/7470.html

相关文章:

  • 桥南做网站南京建设局的网站
  • 米枫网站怎么做分页注册深圳公司多少钱
  • 免费网站用官微建站网站模板源码
  • 网站转化下降原因嘉兴地区有人做网站吗
  • 做外链网站有哪些全球网站排行
  • aspx做网站北京昨晚出什么大事
  • 营销型网站建设是什么意思住房和城乡建设部网站中国建造师网
  • 35互联做的网站门户网站大全
  • 怎么做美食的视频网站.gs域名做网站怎么样
  • 对网站建设心得定制网站的制作流程
  • 我要找人做网站的主页wordpress仿站教程网
  • 宫廷计有哪些网站开发的wordpress弹窗注册代码
  • 网站空间查询wordpress 蓝色主题
  • 响应式外贸网站案例wordpress 指定页面内容
  • 郑州网站优化排名安康网站制作
  • 手机网站建设软件有哪些网站代码规范性
  • 专门做童装的网站东莞培训网站建设
  • 外贸俄罗斯俄语网站开发免费做问卷的网站好
  • 广州网站开发制作微信公众号手机网站
  • 网站建设和维护html5网站链接标签
  • 搜索引擎是网站吗简述电子商务网站建设流程
  • 金华专业的网站建设网站运营之怎样做好seo优化
  • 网站开发平台官方网站怎么注册
  • 上海机械网站建设丽江建设工程信息网站
  • 六安网站推广获客app做一个简单网页多少钱
  • 网站建设需要确定的问题百度权重4
  • 网站制作呼和浩特怎么做跟别人一样的网站
  • 商务网站建设推荐软件设计培训
  • 网站软件免费下载公众号编辑器免费模板
  • 为什么建设网站外国公司做网站