jedis

Jedis运用scan删除正则匹配的key

纵然是瞬间 提交于 2020-08-19 05:33:24
import redis.clients.jedis.Jedis; import redis.clients.jedis.ScanParams; import redis.clients.jedis.ScanResult; import java.util.List; import java.util.Set; public class RedisApplication { private static String prefix = "ws:"; static Jedis jedis; static { jedis = new Jedis("localhost"); System.out.println("连接成功"); } public static void main(String[] args) { // init(); list(); // scan(); del(); } private static void del() { Long count = jedis.del("abc"); System.out.println(count); } private static void scan() { ScanParams params = new ScanParams(); params.match("ws:*"); // params.count(3);

关于分布式锁的这些加分(钱)的面试题,你都拿到了吗?

∥☆過路亽.° 提交于 2020-08-18 07:38:58
引言 为什么要学习分布式锁? 最简单的理由就是作为一个社招程序员,面试的时候一定被面啦,你看怎么多公众号都翻来覆去的发分布式锁的主题,可见它很重要啦,在高考里这就是送分题,不要怪可惜的。 那应届生也会问吗?这就不一定了,但是,如果你会,面试官肯定会多给你那点分(钱) 第三,分布式锁在稍微有丢丢规模大系统里是必备技能啦。认真看看吧。 分布式锁要解决的问题 分布式锁是一个在分布式环境中的重要原语,它表明不同进程间采用互斥的方式操作共享资源。常见的场景是作为一个sdk被引入到大型项目中,主要解决两类问题: 提升效率:加锁是为了避免不必要的重复处理。例如防止幂等任务被多个执行者抢占。此时对锁的正确性要求不高; 保证正确性:加锁是为了避免Race Condition导致逻辑错误。例如直接使用分布式锁实现防重,幂等机制。此时如果锁出现错误会引起严重后果,因此对锁的正确性要求高。 Java里的锁: 锁是开发过程中十分常见的工具,你一定不陌生,悲观锁,乐观锁,排它锁,公平锁,非公平锁等等,很多概念,如果你对java里的锁还不了解,可以参考这一篇:不可不说的Java“锁”事(https://tech.meituan.com/2018/11/15/java-lock.html),这一篇写的很全面了,但是对于初学者,知道这些锁的概念,由于缺乏实际工作经验,可能并不了解锁的实际使用场景

2步轻松搞定SpringBoot2.x分布式session共享,极少配置

别说谁变了你拦得住时间么 提交于 2020-08-17 13:59:33
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 集成redis 1.引入jar包 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.配置属性 在application.properties增加Redis服务的相关信息 #################redis单服务基础配置################# spring.redis.database=0 spring.redis.host=127.0.0.1 spring.redis.password= spring.redis.port=6379 RedisTemplate配置 /** * RedisTemplate配置 */ @Bean public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { // 设置序列化 Jackson2JsonRedisSerializer<Object>

2020阿里巴巴官方最新Redis开发规范!

。_饼干妹妹 提交于 2020-08-17 09:20:58
本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明。 键值设计 命令使用 客户端使用 相关工具 通过本文的介绍可以减少使用Redis过程带来的问题。 一、键值设计 1、key名设计 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video:1 简洁性 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如: user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}。 不要包含特殊字符 反例:包含空格、换行、单双引号以及其他转义字符 2、value设计 拒绝bigkey 防止网卡流量、慢查询,string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。 反例:一个包含200万个元素的list。 非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法 选择适合的数据类型 例如:实体类型(要合理控制和使用数据结构内存编码优化配置,例如ziplist

页面查询案例(使用redis数据库)

泪湿孤枕 提交于 2020-08-16 04:07:46
需求: 1.提供一个index.html页面,页面中有个省份,下拉列表 2.当页面加载完成时,发送ajax请求。加载所有省份 前期项目初步搭建: index.html $(function(){ $.get("url",{},funtion(data){ //url-查询servlet路径,{}不要参数,data为返回的数据,填充到省份列表中 //因为有查询数据库因此有三层架构service(findProvinceServlet)-service(ProvinceService)-dao(ProviniceDao)查询数据库 }) }) ProvinceDao 1.声明JDBCTemplate,查询数据库 2.返回查询的值(List集合) ProvinceService 1.声明dao 2.通过Dao返回查询所有的结果集 findProvinceServlet 1.调用service完成查询,返回List<Province> 2.将数据返回,因为采用的是Ajax请求,因此需要将数据序列化Json 3.响应 整体代码: index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-3.3.1.min.js"><

集群部署的落地实现之spring shiro redis 架构 第二篇 shiro通过自定义CacheManager集成jedisCluster集群 redisCluster

你。 提交于 2020-08-15 08:04:13
前面一篇说的是redis交给spring容器进行管理,我们使用的时候只要做好桥接即可。本篇讲述的是自定义一个简单的CacheManager,和之前的适配器一样都要实现shiro自己的缓存管理器接口CacheManager, Destroyable。 定义池管理 <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxTotal" value="${redis.maxTotal}" /> <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> <property name="testOnReturn" value="${redis.testOnReturn}" /> </bean> 定义jediscluster <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor

采用Jpcap+redis+线程 设备网络流量监控 应用实战实例

拜拜、爱过 提交于 2020-08-15 04:53:10
转载请注明出处:https://www.cnblogs.com/sun-flower1314/p/10630424.html 一、 问题场景:   目前需要服务器端去监控部署在各个城市的设备(包括终端、大屏互动设备、广告机等)的流量情况,包括每台设备对服务器端发出字节数、发出数据包数、最大数据包、IP地址等数据,而设备对其他的服务的访问不予监控。 二、目前 主要采用的技术组合是Jpcap+redis+线程 的方式,    实现思路 是:不断的从网络中抓取对应设备对服务器请求的包数据,对包进行分析,然后将数据放入redis缓存中(若需要数据需要可定时存入数据库进行记录),每抓到对应的设备的数据就会刷新在缓存中的对应设备的数据。从而实现监控。注:用hash结构存储, 存入缓存中的是以设备ip为key,用map值作为value,取数据直接根据设备ip就能拿到对应的数据 三、功能实现 环境的搭建  1. redis服务的搭建 (我是直接在虚拟机中搭建了一个redis作为开发测试),关于搭建redis服务,请网上自行百度   2.底层抓包环境的配置   下载 jpcap 所使用的 jar 包以及 jpcap 需要的环境:   jpcap所需要的用到的文件为: jpcap.jar Jpcap.dll 安装环境: WinPcap_4_1_2.exe   <1>.将jpcap

spring-boot集成redis

冷暖自知 提交于 2020-08-14 05:53:00
集成的客户端 1)lettuce方式集成 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </dependency> 2) jedis方式集成 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </dependency> 集成模式 1)standalone方式集成 spring: redis: host: 127.0

Redis --Java客户端 Jedis

依然范特西╮ 提交于 2020-08-13 14:18:49
Redis --Java客户端 Jedis 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 Jedis: 一款java操作redis数据库的工具. 菜鸟教程文档地址 使用步骤 导入jedis包 使用 package com.jedis.test; import org.junit.Test; import redis.clients.jedis.Jedis; /** * @author guizimo * @date 2020/7/15 4:42 下午 */ public class JedisTest { @Test public void test(){ //1. 获取连接 Jedis jedis = new Jedis("127.0.0.1",6379); //2. 操作 jedis.set("name","zhangsan"); //3. 关闭连接 jedis.close(); } } 测试 感谢 菜鸟教程 万能的网络 以及勤劳的自己 来源: oschina 链接: https://my.oschina.net/guizimo/blog/4383737

redis实现分布式锁

大兔子大兔子 提交于 2020-08-13 14:09:29
一、分布式锁简介 锁 是一种用来解决多个执行线程 访问共享资源 错误或数据不一致问题的工具。 如果 把一台服务器比作一个房子 ,那么 线程就好比里面的住户 ,当他们想要共同访问一个共享资源,例如厕所的时候,如果厕所门上没有锁...更甚者厕所没装门...这是会出原则性的问题的.. 装上了锁,大家用起来就安心多了,本质也就是 同一时间只允许一个住户使用 。 而随着互联网世界的发展,单体应用已经越来越无法满足复杂互联网的高并发需求,转而慢慢朝着分布式方向发展,慢慢进化成了 更大一些的住户 。所以同样,我们需要引入分布式锁来解决分布式应用之间访问共享资源的并发问题。 为何需要分布式锁 一般情况下,我们使用分布式锁主要有两个场景: 避免不同节点重复相同的工作 :比如用户执行了某个操作有可能不同节点会发送多封邮件; 避免破坏数据的正确性 :如果两个节点在同一条数据上同时进行操作,可能会造成数据错误或不一致的情况出现; Java 中实现的常见方式 上面我们用简单的比喻说明了锁的本质: 同一时间只允许一个用户操作 。所以理论上,能够满足这个需求的工具我们都能够使用 (就是其他应用能帮我们加锁的) : 基于 MySQL 中的锁 :MySQL 本身有自带的悲观锁 for update 关键字,也可以自己实现悲观/乐观锁来达到目的; 基于 Zookeeper 有序节点 :Zookeeper