jedis

Jedis(二)——String

自作多情 提交于 2019-11-30 16:33:16
Key值通配符 既然是数据库,肯定有模糊查询的需求,Redis允许使用通配符,这一点,在做一些批量删除的时候,会非常实用 *: 通配任意多个字符 ?: 通配单个字符 []: 通配括号内的某1个字符 String类型 因为存在一种技术,叫序列化,图省事的话,只使用这一种,就够用了 package cn.swsk.xbry.api.v1.md1001; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.exceptions.JedisDataException; /** * @author css * @date 2019/9/24 22:20 */ public class Test { public static void main(String[] args) throws InterruptedException { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(25); config.setMaxIdle(20); config.setMinIdle(5);

Jedis(一)——最简单的Demo

China☆狼群 提交于 2019-11-30 16:31:33
在之前很长的时间里,一直有一些声音,把“Redis” 与 “分布式” 、 “SpringCloud ” 关联起来,我不清楚这是什么样的市场环境导致的,没用过,我也不敢说,我也不敢问。 Redis的定义上,是一个数据库,具备了数据库的特征,可以做数据同步、做集群,这些功能MySQL也有,平常我们也不搞,这样理解,多少能减轻一些学习压力。 更多指令可以直接查询文档,Jedis通常中有同名函数。 依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> Demo 查询全部的key package cn.seaboot.common.file; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.Set; /** * @author css * @date 2019/9/24 22:20 */ public class Test { public static void main(String[]

spring boot通过Jedis来操作redis

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 14:50:42
idea中新建spring boot项目,引入jedis依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency> application.properties中自定义redis配置 #自定义redis配置 myredis.host=localhost myredis.port=6379 myredis.timeout=10 myredis.pool-max-total=1000 myredis.pool-max-idle=500 myredis.pool-max-wait=500 自定义配置类MyRedisConfig.java读取redis配置文件信息,生成JedisPool类型的bean package com.example.jedisredis.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework

redis缓存Hash操作的在主数据中的应用

和自甴很熟 提交于 2019-11-30 14:37:32
Redis hash是一个string类型的field和value的映射表.一个key可对应多个field,一个field对应一个value 1、如何主数据在redis缓存中实现初始化? 1)加载主数据,建立MasterMain.java package com.taikang.healthcare.master.service; import java.io .IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import

Redis Cluste部署与Jedis整合Sentinel与Clusterr(一)

☆樱花仙子☆ 提交于 2019-11-30 14:27:49
一. 原生搭建篇Cluster 了解 cluster 的架构 ) 1.redis.conf 配置文件中开启支持 cluster 集群 , 改名字为 redis-cluster-7000.conf( 方便后面集群管理 ) port 7000 daemonize yes pidfile /var/run/redis-7000.pid dir /opt/module/redis-cluster/data logfile "7000.log" dbfilename "dump-7000.rdb" #开启集群 cluster-enabled yes #集群中本节点配置文件名 自动生成 cluster-config-file nodes-7000.conf #当集群中某个节点挂了,整个集群是否停止服务,设置成no 继续提供服务 cluster-require-full-coverage no 2. 用上面的配置文件启动 redis, 确保配置文件没问题 3. 用 sed 命令生成其他节点的配置文件 sed "s/7000/7001/g" redis-cluster-7000.conf >redis-cluster-7001.conf sed "s/7000/7002/g" redis-cluster-7000.conf >redis-cluster-7002.conf sed "s/7000

redis 存储hash

纵饮孤独 提交于 2019-11-30 13:21:56
这个是项目中用到的我在这里只是做个搬运工, set 就是普通的已key-value 方式存储数据,可以设置过期时间 散列类型与Java中的HashMap相似,是一组键值对的集合,且支持单独对其中一个键进行增删改查操作 hash 上单个不适合存储大量的 filed 并且如果 filed 多了比较消耗cpu,但同时以 散列表存储则比较节省内存。 1.redis中存hash Map<String,String> redisMap = new HashMap<>(); redisMap.put(RedisCommenKey.UMENG_USER_ONLINE_REDIS_KEY + user.getId(), umToken); //13 代表存在哪个数据库中的 redisUtil.hmset(RedisCommenKey.UMENG_USER_ONLINE_REDIS, redisMap, 13); 再看工具类中怎么用的 /** * <p> * 通过key同时设置 hash的多个field * </p> * * @param key * @param hash * @return 返回OK 异常返回null */ public String hmset(String key, Map<String, String> hash, int indexdb) { Jedis jedis =

Redis常用操作

血红的双手。 提交于 2019-11-30 13:17:48
1)查询当前库的所有键:jedis.keys("*") 2)判断某个键是否存在:jedis.exists("001") 3)查看键的类型:jedis.type("002") 4)删除某个键:jedis.del("003") 5)为键设置过期时间,单位秒:jedis.expire("001", 5) 6)查看还有多少秒过期,-1表示永不过期,-2表示已经过期:jedis.ttl("001") 7)查看当前数据库键的数量:jedis.dbSize() 8)清空当前数据库(慎用):jedis.flushDB() 9)删除全部库(慎用):jedis.flushAll() 1,Redis五大数据类型--String 1)根据键查询值:jedis.get("001") 2)添加键值对(覆盖):jedis.set("001","hello") 3)在原值尾部追加值:jedis.append("001", "world") 4)获得值的长度:jedis.strlen("001") 5)只有key不存在时才添加key:jedis.setnx("003", "123") 6)将key中存储的数值增加1,只对数字值操作:jedis.incr("003") 7)将key中存储的数值减1,只对数字值操作:jedis.decr("003") 8)Key中存储数值增加,自定义步长:jedis.incrBy(

Redis集群

家住魔仙堡 提交于 2019-11-30 12:47:11
 这节介绍Redis的集群模式  主从模式提供了读写分离的支持,Sentinel提供了高可用的保障,满足了读模式下的横向扩展,但主节点只有一个,集中式的写模式无法应对不断增长的写需求。  Redis 3.x 版本提供了Redis cluster 功能,服务端sharding使用槽作为分布式的解决方案。对于 2.x版本,则通过客户端API提供的客户端sharding方式,使用一致性哈希来实现数据分片。此外,twiter开源的 twemproxy 和豌豆荚的 codis ,则采用代理模式来实现。 1 服务端模式  对于客户端来说,整个集群被看做一个整体,客户端可以连接任意一个节点进行操作,就像操作单一Redis数据库一样。当客户端操作的key没有分配到该节点上时,会返回转向指令,指向正确的节点。 1.1 集群的建立  3.x 版本的Redis节点可以通过打开 clustrer-enabled 选项来开启服务器的集群模式,再通过 CLUSTER MEET <ip> <port> 命令连接其他节点。  新加入的节点B通过 CLUSTER MEET 命令同节点A建立连接后,节点A会通过 Gossip协议 将节点B的信息传播给集群中的其他节点,当其他节点发现新加入的节点B后也会主动同它建立连接。处于集群状态的节点同单机模式下的服务器实例没什么区别,只是只能使用 db 0 数据库

Configure Jedis timeout

≡放荡痞女 提交于 2019-11-30 12:44:44
I'm having problems completing an .hgetall() , here's what I've tried: Jedis jedis = new Jedis(REDIS_MASTER_NODE); jedis.connect(); jedis.configSet("timeout", "30"); Map<String, String> alreadyStored = jedis.hgetAll(redisTargetHash); and here's what I get: Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out at redis.clients.jedis.Protocol.process(Protocol.java:79) at redis.clients.jedis.Protocol.read(Protocol.java:131) at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199) at redis.clients

Redis专题(3):锁的基本概念到Redis分布式锁实现

孤街醉人 提交于 2019-11-30 11:59:36
拓展阅读: Redis闲谈(1):构建知识图谱 Redis专题(2):Redis数据结构底层探秘 近来,分布式的问题被广泛提及,比如分布式事务、分布式框架、ZooKeeper、SpringCloud等等。本文先回顾锁的概念,再介绍分布式锁,以及如何用Redis来实现分布式锁。 一、锁的基本了解 首先,回顾一下我们工作学习中的锁的概念。 为什么要先讲锁再讲分布式锁呢? 我们都清楚,锁的作用是要解决多线程对共享资源的访问而产生的线程安全问题,而在平时生活中用到锁的情况其实并不多,可能有些朋友对锁的概念和一些基本的使用不是很清楚,所以我们先看锁,再深入介绍分布式锁。 通过一个卖票的小案例来看,比如大家去抢dota2 ti9门票,如果不加锁的话会出现什么问题?此时代码如下: package Thread; import java.util.concurrent.TimeUnit; public class Ticket { /** * 初始库存量 * */ Integer ticketNum = 8; public void reduce(int num){ //判断库存是否够用 if((ticketNum - num) >= 0){ try { TimeUnit.MILLISECONDS.sleep(200); }catch (InterruptedException e){ e