jedis

redis

蹲街弑〆低调 提交于 2019-12-20 18:57:38
标题 redis 安装部署测试 安装 tar xzf redis-2.8.17.tar.gz cd redis-2.8.17 make 启动 ./redis-server //中文乱码 redis-cli --raw 远程连接 redis-cli -h 127.0.0.1 -p 6379 -a "mypass" 设置密码 config set requirepass redis@123 发布订阅 创建订阅 SUBSCRIBE redisChat 发布消息 PUBLISH redisChat "Redis is a great caching technique" java API https://blog.csdn.net/zhangguanghui002/article/details/78770071 连接redis package database; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * @description: * @author: HYW * @create: 2019-12-20 16:41 */ public class RedisPool { //服务器IP地址

分布式锁与实现(一)——基于Redis实现

左心房为你撑大大i 提交于 2019-12-20 16:03:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 概述 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。 在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。 选用Redis实现分布式锁原因 Redis有很高的性能 Redis命令对此支持较好,实现起来比较方便 在此就不介绍Redis的安装了,具体在Linux和Windows中的安装可以查看我前面的博客。 http://www.cnblogs.com/liuyang0/p/6504826.html 使用命令介绍 SETNX SETNX key val 当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。 expire expire key timeout

Java中使用Jedis操作Redis

喜你入骨 提交于 2019-12-20 11:40:15
使用Java操作Redis需要jedis-2.1.0.jar,下载地址: http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址: http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip 1 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import redis.clients.jedis.Jedis; 12 13 public class TestRedis { 14 private Jedis jedis; 15 16 @Before 17 public void setup() { 18 //连接redis服务器,192.168.0.100:6379 19 jedis = new Jedis("192.168.0.100", 6379); 20 /

How Jedis Pool works?

和自甴很熟 提交于 2019-12-20 09:27:18
问题 I'm using Jedis pool to manage connections to Redis server. An example code of mine as follows: public Set<String> getTopArticleList(int start, int end) { Set<String> list = null; Jedis j = JedisFactory.getInstance().getJedisPool().getResource(); Pipeline pipe = j.pipelined(); try { // do stuff with redis pipe.sync(); } catch (JedisConnectionException jex) { JedisFactory.getInstance().getJedisPool().returnBrokenResource(j); } finally { JedisFactory.getInstance().getJedisPool().returnResource

spring-data-redis redisTemplate Exception

青春壹個敷衍的年華 提交于 2019-12-20 01:09:19
问题 When I call get() method, an exception occured here is the code @Service("RedisService") public class RedisServiceImpl implements RedisService { @Autowired RedisTemplate<String, Long> redisTemplate; @Override public Long get(String key) { return redisTemplate.opsForValue().get(key); } @Override public Long incrBy(String key, long increment) { return redisTemplate.opsForValue().increment(key, increment); } when I use incrBy method, there are no exceptions but only errors only get method here

How to model Data in Redis for values Complex Data structure?

隐身守侯 提交于 2019-12-19 09:45:25
问题 I've taken a reference of the link : http://panuoksala.blogspot.com/2015/09/redis-many-to-many.html to developed below code. I've implemented some code, looks like nothing is achievable so far as Get User 1 groups: hget User:1 Groups Does not yeild the results. I wanted to get answer more from the Data Modelling perspectives. I've modeled code like below, but its not working as per my requirement - Group.java @Builder @Data @AllArgsConstructor @NoArgsConstructor @RedisHash("groups") public

[Redis] Redis日常学习总结一

老子叫甜甜 提交于 2019-12-19 03:22:16
一 Redis使用bitset(bitmap)来统计日活跃量 1 BitMap介绍   Bitmap(即Bitset),是一串连续的2进制数字(0或1),每一位所在的位置为偏移(offset),bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。   Redis从2.2.0版本开始新增了 setbit , getbit , bitcount 等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为 setbit 等命令只不过是在 set 上的扩展。在bitmap上可执行AND,OR,XOR以及其它位操作。 2 相关命令   (1)SETBIT key offset value   对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。位的设置或清除取决于 value 参数,可以是 0 也可以是 1 。当 key 不存在时,自动生成一个新的字符串值。   字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。   offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。    对使用大的 offset 的 SETBIT 操作来说,内存分配可能造成 Redis 服务器被阻塞。   redis>

通过Redis 实现分布式锁_利用Jedis 客户端

橙三吉。 提交于 2019-12-19 03:07:24
前言 分布式锁一般有三种实现方式: 数据库 乐观锁;2. 基于 Redis 的分布式锁;3. 基于ZooKeeper的分布式锁。 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。 可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性: 在任意时刻,只有一个客户端能持有锁。 不会发生死锁: 即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性: 只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 解铃还须系铃人: 加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。 代码实现 一、引入redis 依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 备注:根据版本不同,jedis 的set 方法也有所不同 二、配置文件增加redis 配置 # redis.properties 配置文件: # region Redis jedis #

Redis分布式锁之实战

拥有回忆 提交于 2019-12-18 21:02:51
一、pom依赖 <dependency> <groupId>tf56.redis</groupId> <artifactId>redis-client</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <artifactId>servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> <exclusion> <artifactId>gson</artifactId> <groupId>com.google.code.gson</groupId> </exclusion> </exclusions> </dependency> <!-- 其他redis依赖 --> 二、MyCacheCloudRedisFactory工具类 package tf56.payOnlineService.util.redis; ​ import com.sohu.tv.builder.ClientBuilder; import com.sohu.tv.cachecloud.client.basic.enums.RedisTypeEnum; ​ import org.apache.commons.lang.StringUtils; import org

吐血整理系列 Redis与Jedis排序

你离开我真会死。 提交于 2019-12-18 17:02:17
在优锐课学习笔记中,我们将讨论Redis SORT命令。 Redis提供了SORT命令,我们可以使用该命令从LIST,SET或ZSET中检索或存储排序的值。 以最简单的形式,我们可以在KEY上使用命令,如下面的示例所示: SORT numbers_list 这将对键中包含的值进行排序并返回它们。 该命令将值排序为数字。 因此,假设我们有一个包含以下值的列表: 1, 110, 5 上面的命令将返回: 1 5 110 我们可以指定使用ALPHA修饰符按字母顺序对值进行排序。 有许多修饰符。 我们将在下面的示例中查看其中的一些。 这些示例将使用Jedis API。 对于我们的示例,让我们考虑一下我们有一个想法管理系统。 我们有一个包含系统中所有用户名的列表: all:users [junior, francisco, ribeiro, user4] 对于每个用户名,将有一个包含用户信息的哈希: user: user:junior - name: "Junior User" - num_ideas : "5" - email:"fjunior@email.com" user:francisco - name: "Francisco User" - num_ideas: "4" - email: "francisco@email.com" ... 对于我们的示例