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

电商网站开发经验宁波网站建设明细报价

电商网站开发经验,宁波网站建设明细报价,移动互联网应用程序个人信息保护管理暂行规定(征求意见稿),优化方案物理电子版redis的基本操作指令就不多说了#xff0c;今天对redis的进阶操作给大家介绍一下#xff0c;以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用#xff1f;相信大家读了本篇对redis的整体会有更深的认知。一、Pipelin模式介绍1、redis的通常使用方式大多数…redis的基本操作指令就不多说了今天对redis的进阶操作给大家介绍一下以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用相信大家读了本篇对redis的整体会有更深的认知。一、Pipelin模式介绍1、redis的通常使用方式大多数情况下我们都会通过请求-相应机制去操作redis。使用这种模式的步骤为获得jedis实例发送redis命令由于redis是单线程的所以处理完上一个指令之后才会进行执行该命令。整个交互流程如下2、Pipeline模式然而使用Pipeline 模式客户端可以一次性的发送多个命令无需等待服务端返回。这样就大大的减少了网络往返时间提高了系统性能。pipeline是多条命令的组合使用PIPELINE 可以解决网络开销的问题原理也非常简单,流程如下, 将多个指令打包后,一次性提交到Redis, 网络通信只有一次3、性能对比可以看到redis的延迟主要出现在网络请求的IO次数上因此我们在使用redis的时候尽量减少网络IO次数通过pipeline的方式将多个指令封装在一个命令里执行。二、Redis事物redis的简单事务是将一组需要一起执行的命令放到multi和exec两个命令之间其中multi代表事务开始exec代表事务结束1、事务命令multi:事务开始exec:提交事务watch:事务监控WATCH命令可以监控一个或多个键一旦其中有一个键被修改或删除之后的事务就不会执行。监控一直持续到discard:停止事务在执行exec之前执行该命令提交事务会失败执行的命令会进行回滚127.0.0.1:6379 multi //开始事务OK127.0.0.1:6379 sadd tt 1 //业务操作QUEUED127.0.0.1:6379 DISCARD //停止事务OK127.0.0.1:6379 exec //提交事务(error) ERR EXEC without MULTI //报不存在事务异常127.0.0.1:6379 get tt //获取不到对象(nil)127.0.0.1:63792、事务异常redis支持事务但他属于弱事务中间的一些异常可能会导致事务失效。1、命令错误语法不正确导致事务不能正常结束127.0.0.1:6379 multi //开始事务OK127.0.0.1:6379 set aa 123 //业务操作QUEUED127.0.0.1:6379 sett bb 124 //命令错误(error) ERR unknown command sett127.0.0.1:6379 exec (error) EXECABORT Transaction discarded because of previous errors. //提交事务异常127.0.0.1:6379 get aa //查询不到数据(nil)127.0.0.1:63792、运行错误语法正确但类型错误事务可以正常结束127.0.0.1:6379 multiOK127.0.0.1:6379 set t 1 //业务操作1QUEUED127.0.0.1:6379 sadd t 1 //业务操作2QUEUED127.0.0.1:6379 set t 2 //业务操作3QUEUED127.0.0.1:6379 exec1) OK2) (error) WRONGTYPE Operation against a key holding the wrong kind of value //类型异常3) OK127.0.0.1:6379 get t //可以获取到t2127.0.0.1:6379三、redis发布与订阅redis提供了“发布、订阅”模式的消息机制其中消息订阅者与发布者不直接通信发布者向指定的频道channel发布消息订阅该频道的每个客户端都可以接收到消息1、Redis发布订阅常用命令命令含义publish channel发布消息subscribe channel订阅消息pubsub numsub channel查看订阅数unsubscribe channel取消订阅psubscribe ch*按模式订阅和取消订阅2、性能测试3、应用场景 redis主要提供发布消息、订阅频道、取消订阅以及按照模式订阅和取消订阅和很多专业的消息队列kafka rabbitmq,redis的发布订阅显得很lower, 比如无法实现消息规程和回溯 但就是简单如果能满足应用场景用这个也可以订阅号、公众号、微博关注、邮件订阅系统等 即使通信系统 群聊部落系统微信群四、键的迁移键迁移大家可能用的不是很多因为一般都是使用redis主从同步。不过对于我们做数据统计分析使用的时候可能会使用到比如用户标签。为了避免key批量删除导致的redis雪崩一般都是通过一个计算使用的redis和一个最终业务使用的redis通过将计算时用的redis里的键值通过迁移的方式一个一个的更新到业务redis中使其对业务冲击最小化。1、movemove指令将redis一个库中的数据迁移到另外一个库中。move key db //reids有16个库 编号为015 set name DK; move name 5 //迁移到第6个库 elect 5 ;//数据库切换到第6个库 get name 可以取到james1如果key在目标数据库中已存在那么什么也不会发生。这种模式不建议在生产环境使用在同一个reids里可以玩2、dumpRedis DUMP 命令用于将key给序列化 并返回被序列化的值。用于导入到其他服务中一般通过dump命令导出使用restore命令导入。1,在A服务器上set name james; dump name; // 得到x00x05jamesbx001x82;fDhJ2,在B服务器上restore name 0 x00x05jamesbx001x82;fDhJ //0代表没有过期时间 get name //返回james3、migratemigrate用于在Redis实例间进行数据迁移实际上migrate命令是将dump、restore、del三个命令进行组合从而简化了操作流程。migrate命令具有原子性从Redis 3.0.6版本后已经支持迁移多个键的功能。migrate命令的数据传输直接在源Redis和目标Redis上完成目标Redis完成restore后会发送OK给源Redis。migrate192.168.42.1126379name01000copyreplace指令要迁移的目标IP端口迁移键值目标库超时时间迁移后不删除原键不管目标库是不存在test键都迁移成功比如把111上的name键值迁移到112上的redis192.168.42.111:6379 migrate 192.168.42.112 6379 name 0 1000 copy五、自定义命令封装当我们使用jedis或者jdbctemplate时想执行键迁移的指令的时候发现根本没有给我们封装相关指令这个时候我们该怎么办呢除了框架帮我们封装的方法外我们自己也可以通过反射的方式进行命令的封装主要步骤如下建立Connection链接使用Connection连接Redis通过反射获取Connection中的sendCommand方法protected Connection sendCommand(Command cmd, String... args)。调用connection的sendCommand方法第二个参数为执行的命令比如set,get,client等第三个参数为命令的参数。可以看到ProtocolCommand这个枚举对象包含了redis的所有指令即所有的指令都可以通过这个对象获取到。并封装执行执行invoke方法并且按照redis的指令封装参数获取Redis的命令执行结果 package com.james.cache.jedis;import redis.clients.jedis.Connection; import redis.clients.jedis.Protocol;import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;/*** Auther: DK* Date: 2020/10/11 23:17* Description:*/ public class RedisKeyMove {public static void main(String[] args) throws IOException {//1.使用Connection连接Redistry (Connection connection new Connection(10.1.253.188, 6379)) {// 2. 通过反射获取Connection中的sendCommand方法protected Connection sendCommand(Command cmd, String... args)。Method method Connection.class.getDeclaredMethod(sendCommand, Protocol.Command.class, String[].class);method.setAccessible(true); // 设置可以访问private和protected方法// 3. 调用connection的sendCommand方法第二个参数为执行的命令比如set,get,client等第三个参数为命令的参数。// 3.1 该命令最终对应redis中为: set test-key test-valuemethod.invoke(connection, Protocol.Command.MIGRATE,new String[] {10.1.253.69, 6379, name, 0, 1000, copy});// 4.获取Redis的命令执行结果System.out.println(connection.getBulkReply());} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}} }六、键全量遍历1、keys指令含义keys *返回所有的键, *匹配任意字符多个字符keys *y以结尾的键keys n*e以n开头以e结尾返回namekeys n?me?问号代表只匹配一个字符 返回name,全局匹配keys n?m*返回namekeys [j,l]*返回以j l开头的所有键 keys [j]ames 全量匹配james考虑到是单线程使用改命令会阻塞线程 在生产环境不建议使用键多可能会阻塞。2、渐进式遍历 scan1初始化数据mset n1 1 n2 2 n3 3 n4 4 n5 5 n6 6 n7 7 n8 8 n9 9 n10 10 n11 11 n12 12 n13 132遍历匹配scan 0 match n* count 5 匹配以n开头的键最大是取5条第一次scan 0开始第二次从游标4096开始取20个以n开头的键相当于一页一页的取当最后返回0时键被取完。3、scan 和keys对比通过游标分布进行的不会阻塞线程;提供 limit 参数可以控制每次返回结果的最大条数limit 不准返回的结果可多可少;同 keys 一样Scan也提供模式匹配功能;服务器不需要为游标保存状态游标的唯一状态就是 scan 返回给客户端的游标整数;scan返回的结果可能会有重复需要客户端去重复;scan遍历的过程中如果有数据修改改动后的数据能不能遍历到是不确定的;单次返回的结果是空的并不意味着遍历结束而要看返回的游标值是否为零;4、其他遍历命令SCAN 命令用于迭代当前数据库中的数据库键。SSCAN 命令用于迭代集合键中的元素。HSCAN 命令用于迭代哈希键中的键值对。ZSCAN 命令用于迭代有序集合中的元素包括元素成员和元素分值。用法和scan一样作者ark_King_原文链接https://blog.csdn.net/b379685397/article/details/109015852
http://www.zqtcl.cn/news/667783/

相关文章:

  • 西安火车站网站建设深圳做百度网站
  • asp网站助手金融学类就业方向及就业前景
  • 用点心做点心官方网站现在手机网站用什么做的好
  • 唐山市路桥建设有限公司网站专门写文章的网站
  • 东莞食品网站建设湖南企业竞价优化
  • 吉林网站建设找哪家湛江大型网站模板建设
  • 中国建设监理业协会网站国产cms
  • 计算机网站建设与维护wordpress 500错误
  • 元器件网站开发客户wordpress伪静态301错误
  • 网站设计排行怎么样用ppt做网站
  • 网站联盟名词解释网站建设 上海网站建设
  • 南通优普高端网站建设wordpress 煎蛋主题
  • 大企业网站制作及维护关于网站建设的论文题目
  • wordpress网站字体淄博网站搜索排名
  • visual stdio 做网站 注册用户 密码必须6位以上品牌服装网站源码
  • 做网站用到的技术湖南建设银行网站
  • 成都大型网站设计公司电脑上重新下载一个wordpress
  • 番禺网站建设知乎自己做网站卖矿山设备
  • 手表网站起名登录页面html模板
  • 泰国如何做网站推广大英网站建设工作
  • 山东省职业能力建设处网站dz论坛怎么做视频网站吗
  • 郑州专业做网站的公司今天郑州最新通告
  • wap网站引导页特效wordpress 文章 数据库
  • 做建筑效果图最好的网站做网站是如果盈利的
  • 企业网站seo托管怎么做seo公司培训
  • 自己做网站不想买空间 自己电脑可以做服务器吗?下载建设网站软件
  • 有服务器自己怎么做网站百度广告电话号码是多少
  • 一个网站 两个数据库沈阳市住房和城乡建设厅网站
  • 重庆建站网站流程及费用制作网页界面工具
  • 设计师家园官网wordpress 4.9 优化