jedis

Is there a way to pass redis commands in jedis, without using the functions?

瘦欲@ 提交于 2020-08-06 05:10:08
问题 We are trying to build a console to process redis queries. But, in the back end we need to use Jedis. So, the commands, given as the inputs needs to be processed using Jedis. For example, in redis-cli, we use " keys * ". For the same we use jedis.keys(" * ") in Jedis. I have no idea, how to convert " keys * " into jedis.keys(" * "). Kindly tell me some suggestions.... 回答1: Hmm...You can make the same thing by referring to the following. redis.clients.jedis.Connection.sendCommand(Command,

Redis哨兵(Sentinel)模式

陌路散爱 提交于 2020-08-05 08:30:26
Redis哨兵(Sentinel)模式 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式 。 一、哨兵模式概述 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是 哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 Redis哨兵 这里的哨兵有两个作用 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。 当哨兵监测到master宕机,会自动将slave切换成master,然后通过 发布订阅模式 通知其他的从服务器,修改配置文件,让它们切换主机。 然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。 用文字描述一下 故障切换(failover) 的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为 主观下线 。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作

Redis --Java客户端 Jedis

泄露秘密 提交于 2020-08-05 06:30:22
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/u/4383327/blog/4390066

jedis 操作5种数据类型 及 连接池 的使用

爷,独闯天下 提交于 2020-08-05 05:01:51
package cn.itcast.jedis.test; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.List; import java.util.Map; import java.util.Set; public class JedisTest { @Test public void test1_string() { Jedis jedis = new Jedis("localhost", 6379); jedis.set("username", "zhangsan"); String name = jedis.get("username"); System.out.println(name); jedis.close(); } @Test public void test2_setex_string() { Jedis jedis = new Jedis(); jedis.setex("activecode", 20, "hehe"); jedis.close(); } @Test public void

Redis详解(九)------ 哨兵(Sentinel)模式详解

不想你离开。 提交于 2020-08-04 12:31:40
  在上一篇博客---- Redis详解(八)------ 主从复制 ,我们简单介绍了Redis的主从架构,但是这种主从架构存在一个问题,当主服务器宕机,从服务器不能够自动切换成主服务器,为了解决这个问题,我们又介绍了哨兵模式,本篇博客我们继续深入的介绍一下这种模式. 1、架构图    2、服务器列表    3、搭建主从模式    ①、主要配置项   主服务器(上图的Node1)配置文件 redis.config 主要配置项: #配置端口 port 6379 #以守护进程模式启动 daemonize yes #pid的存放文件 pidfile /var/run/redis_6379.pid #日志文件名 logfile "redis_6379.log" #存放备份文件以及日志等文件的目录 dir "/opt/redis/data"   从服务器配置文件主要配置项基本和主服务器保持一致,需要修改端口 port ;另外存放位置和日志文件名也可以根据需要修改.   为了表示主从关系,还需要在从服务器配置文件中添加一行 重要配置 : #配置主服务器IP,端口 slaveof 192.168.14.101 6379    ②、验证主从关系   配置完成后,我们通过 redis-server redis.conf 命令启动Redis.然后通过 redis-cli -p 端口

Redis 中的 Java 客户端(Jedis / Lettuce)

喜夏-厌秋 提交于 2020-07-29 09:49:30
本文学习使用 Java 客户端( Jedis / Lettuce ) 操作 Redis 。 1 开启远程连接 Redis 默认是不支持远程连接的,需要手动开启,修改 redis.conf ,主要有 3 个地方改动: vi /usr/local/redis-5.0.8/redis.conf # bind 127.0.0.1 protected-mode no requirepass 123456 之后重新启动 Redis 。 2 Jedis 2.1 基本使用 Jedis 的 GitHub 地址: https://github.com/xetorthio/jedis 。 首先创建一个普通的 Maven 项目 redis-jedis ,项目创建成功后,添加 Jedis 依赖: <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13<

高并发 共享资源 死锁 分布式锁 redisTemplate实现分布式锁 EvalSha is not supported in cluster environment

不羁的心 提交于 2020-07-28 17:09:16
也有不用回调函数直接调用脚本的版本,但是经过我的测试之后,发现报错EvalSha is not supported in cluster environment 上锁解锁的代码比较简单,也好理解。利用lua脚本解释redis命令,保证命令一次性运行成功,从而保证命令执行的原子性。 但是想和业务系统结合起来还是有难度的。特别是在本地事务中去使用的时候,需要结合业务特点,本地事务提交之后解锁也要成功。 /** * 获取锁 * @param lockKey * @param value * @param expireTime:单位-秒 * @return */ public static boolean getLock(String lockKey, String requestId, int expireTime) { boolean ret = false; try { List<String> keys = new ArrayList<String>(); keys.add(lockKey); List<String> args = new ArrayList<String>(); args.add(requestId); args.add(expireTime + ""); String script = "if redis.call('setNx',KEYS[1],ARGV[1

对比Memcached和Redis,谁才是适合你的缓存?

孤街醉人 提交于 2020-07-28 11:23:56
Memcached vs Redis 近期公司采购软件,评估时,某软件谈到使用了 Memcached 和 Redis 缓存。在本文中,将研究这两个流行的缓存的异同,方便理解和记忆。 1. Memcached 与 Redis 通常,我们会考虑在处理大量数据时使用** 缓存 提高性能。** Memcached 是一个分布式内存缓存系统,设计简单易用,非常适合用作缓存或会话存储。 Redis 是一个内存中的数据结构存储,它提供了一系列丰富的特性。它作为缓存、数据库、消息代理和队列非常有用。 2. 安装 2.1. 安装 Memcached 下载最新版的 Memcached 包并执行make进行安装 : $ wget http://memcached.org/latest $ tar -zxvf memcached-1.6.3.tar.gz $ cd memcached-1.6.3 $ ./configure && make && make test && sudo make install 2.2. 安装 Redis 相似的, 安装最新版本的 Redis server : $ wget http://download.redis.io/releases/redis-5.0.8.tar.gz $ tar xzf redis-5.0.8.tar.gz $ cd redis-5.0.8 $

Redis最全详解

牧云@^-^@ 提交于 2020-07-27 06:57:42
1.Redis核心数据结构与核心原理 Redis安装 下载地址:http://redis.io/download 安装步骤: # 安装gcc yum install gcc # 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar xzf redis-5.0.3.tar.gz cd redis-5.0.3 # 进入到解压好的redis-5.0.3目录下,进行编译与安装 make # 启动并指定配置文件 src/redis-server redis.conf(注意要使用后台启动,所以修改redis.conf里的daemonize改为yes) # 验证启动是否成功 ps -ef | grep redis # 进入redis客户端 src/redis-cli # 退出客户端 quit # 退出redis服务: (1)pkill redis-server (2)kill 进程号 (3)src/redis-cli shutdown Redis的单线程和高性能 Redis 单线程为什么还能这么快? 因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程

redis实现tryAcquire

亡梦爱人 提交于 2020-07-27 02:03:14
public static boolean tryAcquire(String key) { String value = String.valueOf(System.currentTimeMillis()); String statusCode = redisTemplate.execute(new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) { Jedis conn = (Jedis)connection.getNativeConnection(); return conn.set(key, value, "NX", "EX", TimeUnit.MINUTES.toSeconds(30)); } }, true); if ("OK".equals(statusCode)) { return true; } return false; } 来源: oschina 链接: https://my.oschina.net/gdouyang/blog/4295592