关于javaredisclient的信息

java rediscachepipeline怎么检查key是否存在

Java使用Pipeline对Redis批量读写(hmsethgetall)

一般情况下,Redis Client端发出一个请求后,通常会阻塞并等待Redis服务端处理,Redis服务端处理完后请求命令后会将结果通过响应报文返回给Client。

这有点类似于HBase的Scan,通常是Client端获取每一条记录都是一次RPC调用服务端。

在Redis中,有没有类似HBase Scanner Caching的东西呢,一次请求,返回多条记录呢?

有,这就是Pipline。官方介绍

通过pipeline方式当有大批量的操作时候,我们可以节省很多原来浪费在网络延迟的时间,需要注意到是用pipeline方式打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。打包的命令越多,缓存消耗内存也越多。所以并不是打包的命令越多越好。

关于javaredisclient的信息

java redis set怎样设置key

RedisClient.set(“定义名” , 内容, 时间);

eg:

RedisClient.set(“loginStatus” , phone.toString(), 15 * 1000);

如何用java获取redis的info

预备

jedis-2.5.2

commons-pool2-2.2.jar

使用单连接

此方式仅建议用于开发环境做调试用。

// 创建连接

String host = “192.168.56.102”;

int port = 6379;

Jedis client = new Jedis(host, port);

// 执行set指令

String result = client.set(“key-string”, “Hello, Redis!”);

System.out.println( String.format(“set指令执行结果:%s”, result) );

// 执行get指令

String value = client.get(“key-string”);

System.out.println( String.format(“get指令执行结果:%s”, value) );

运行上述代码,控制台输出:

set指令执行结果:OK

get指令执行结果:Hello, Redis!

使用连接池

此方式适用于仅使用单个Redis实例的场景。

// 生成连接池配置信息

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxIdle(10);

config.setMaxTotal(30);

config.setMaxWaitMillis(3*1000);

// 在应用初始化的时候生成连接池

JedisPool pool = new JedisPool(config, “192.168.56.102”, 6379);

// 在业务操作时,从连接池获取连接

Jedis client = pool.getResource();

try {

// 执行指令

String result = client.set(“key-string”, “Hello, Redis!”);

System.out.println( String.format(“set指令执行结果:%s”, result) );

String value = client.get(“key-string”);

System.out.println( String.format(“get指令执行结果:%s”, value) );

} catch (Exception e) {

// TODO: handle exception

} finally {

// 业务操作完成,将连接返回给连接池

if (null != client) {

pool.returnResource(client);

}

} // end of try block

// 应用关闭时,释放连接池资源

pool.destroy();

运行上述代码,控制台输出:

set指令执行结果:OK

get指令执行结果:Hello, Redis!

使用连接池+分布式

在规模较大的系统中,往往会有多个Redis实例做负载均衡。并且还实现主从备份,当主实例发生故障时,切换至从实例提供服务。

类似于Memcached的客户端,Jedis也提供了客户端分布式操作的方式,采用一致性哈希算法。

// 生成多机连接信息列表

ListJedisShardInfo shards = new ArrayListJedisShardInfo();

shards.add( new JedisShardInfo(“127.0.0.1”, 6379) );

shards.add( new JedisShardInfo(“192.168.56.102”, 6379) );

// 生成连接池配置信息

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxIdle(10);

config.setMaxTotal(30);

config.setMaxWaitMillis(3*1000);

// 在应用初始化的时候生成连接池

ShardedJedisPool pool = new ShardedJedisPool(config, shards);

// 在业务操作时,从连接池获取连接

ShardedJedis client = pool.getResource();

try {

// 执行指令

String result = client.set(“key-string”, “Hello, Redis!”);

System.out.println( String.format(“set指令执行结果:%s”, result) );

String value = client.get(“key-string”);

System.out.println( String.format(“get指令执行结果:%s”, value) );

} catch (Exception e) {

// TODO: handle exception

} finally {

// 业务操作完成,将连接返回给连接池

if (null != client) {

pool.returnResource(client);

}

} // end of try block

// 应用关闭时,释放连接池资源

pool.destroy();

运行上述代码,控制台输出:

set指令执行结果:OK

get指令执行结果:Hello, Redis!

java连接不上linux的redis

有可能是网络问题(如果这个错误出现的频率并不高)

连接池满了,等待队列也满了(恭喜你可以加机器了)

java代码怎么正则删除redis的数据

java代码怎么正则删除redis的数据,即批量删除符合一定条件的redis数据,现在介绍批量删除已某些字符开头的redis数据:

在Java中连接Redis,并进行操作,首先得加载以JAR包形式存在的Java中的Redis Client,我们这里选择Jedis。以下是使用Jedis的具体步骤:

在Maven项目中,在pom.xml中增加如下语句(即加载Jedis jar包):

dependency

         groupIdredis.clients/groupId

artifactIdjedis/artifactId

        version2.7.2/version

typejar/type

/dependency

如不是Maven工程,就自行下载Jedis jar包引用即可。

在加载Jedis JAR包之后,可以直接使用新建一个Jedis实例的方法,来建立一个到Redis的连接,并进行操作。不过跟Mysql一样,每次操作的时候,都建立连接,很耗费性能。解决方法就是从一个连接池中取出连接对象,用完还回去。使用连接池的方案还能解决很多同步性问题。

在Jedis中,管理Redis连接的类是JedisPool

package com.atzy

import redis.clients.jedis.Jedis;  

import redis.clients.jedis.JedisPool;

public class RedisHelper {

 public static void main(String[] args) {

JedisPool jedisPool = new JedisPool(“www.easyaq.com”, 6379);

     Jedis jedis = null;

try {

jedis = jedisPool.getResource();

         String pre_str=”ab”; 

          SetString set = jedis.keys(pre_str +”*”);

          IteratorString it = set.iterator();

           while(it.hasNext()){

              String keyStr = it.next();

              System.out.println(keyStr);

              jedis.del(keyStr);

            }

} catch (Exception e) {

e.printStackTrace();

} finally {

if (jedis != null)

jedis.close();

}

jedisPool.destroy();

}

}

以上代码则是批量删除以某字符串前缀的key 。

redis java 有什么用

Java连接redis的使用示例

Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。

Redisclient支持多种语言,包括:c、C++、C#、php、java、python、go等语言,根据自己的开发语言,选择合适的redis client版本类型即可。我是使用java语言开发的,针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。

Redisson版的redis可发工程搭建

1. 新建maven工程

2. 在pom.xml文件的dependencies节点下增加如下内容:

dependency

groupIdorg.redisson/groupId

artifactIdredisson/artifactId

version1.0.2/version

/dependency

dependency

groupIdorg.slf4j/groupId

artifactIdslf4j-log4j12/artifactId

version1.7.7/version

/dependency

3. 保存pom.xml后,等eclispe工程构建完成后即可进行开发了

开发示例

下面是演示连接redis服务器、保存读取concurrentMap对象、保存读取set对象和保存读取Queue对象的示例代码,代码比较简单,这里就不再详细讲解了,代码如下:

[java] view plaincopy

package com.my.test.redis;

import java.util.Queue;

import java.util.Set;

import java.util.concurrent.ConcurrentMap;

import org.redisson.Config;

import org.redisson.Redisson;

public class RedisExample {

/**

* @param args

*/

public static void main(String[] args) {

// 1.初始化

Config config = new Config();

config.setConnectionPoolSize(10);

config.addAddress(“127.0.0.1:6379”);

Redisson redisson = Redisson.create(config);

System.out.println(“reids连接成功…”);

// 2.测试concurrentMap,put方法的时候就会同步到redis中

ConcurrentMapString, Object map = redisson.getMap(“FirstMap”);

map.put(“wuguowei”, “男”);

map.put(“zhangsan”, “nan”);

map.put(“lisi”, “女”);

ConcurrentMap resultMap = redisson.getMap(“FirstMap”);

System.out.println(“resultMap==” + resultMap.keySet());

// 2.测试Set集合

Set mySet = redisson.getSet(“MySet”);

mySet.add(“wuguowei”);

mySet.add(“lisi”);

Set resultSet = redisson.getSet(“MySet”);

System.out.println(“resultSet===” + resultSet.size());

//3.测试Queue队列

Queue myQueue = redisson.getQueue(“FirstQueue”);

myQueue.add(“wuguowei”);

myQueue.add(“lili”);

myQueue.add(“zhangsan”);

myQueue.peek();

myQueue.poll();

Queue resultQueue=redisson.getQueue(“FirstQueue”);

System.out.println(“resultQueue===”+resultQueue);

// 关闭连接

redisson.shutdown();

}

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 10:19:47
下一篇 2024年3月28日 10:26:59

相关推荐

  • 关于avrstudio6c语言的信息

    c语言的程序员们你们公司用的开发工具是什么呢? 学c语言可以用的软件推荐如下:TurboC是由美国Borland公司开发的一套C语言程序开发工具,Borland公司是一家专门从事软件开发、研制的大公司。 Code:Blocks是一个开放源码的全功能的跨平台C/C++集成开发环境。Code:Blocks是开放源码软件。Code:Blocks由纯粹的C++语言开…

    2024年5月23日
    4700
  • 关于java如何查找线程的信息

    kill-3生成的线程堆栈怎么查看 通过给JVM发送一个SIGQUIT信号,您可以得到一个线程堆。 threaddump文件就是文本文件,可以使用任何文本查看工具进行查看; 建议使用比较高效的工具,比如more, less 等。 “Full thread dump”是一个全局唯一的关键字,你可以在中间件和单机版本Java的线程堆栈信息的输出日志中找到它(比如…

    2024年5月23日
    4100
  • 关于javasocketreader的信息

    用JAVA编写一个socket通信程序。 1、java编程对于Socket之间的通信过程如下:服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。 2、服务端初始化ServerSocket,然后对指定的端口进行绑定,接着对端口及进行监听,通过调用accept方法阻塞。 此时,如果客户端有一个socket连接到服务端,那…

    2024年5月23日
    8000
  • 关于javapitfallspdf的信息

    怎么用java动态生成pdf文档 1、首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为依赖项。您可以从这个链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。 2、iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通…

    2024年5月23日
    4400
  • 关于pythonexcel打印设置字体的信息

    如何使用python更改excel表中的字体属性 字体,背景,边框等的颜色都可以通过三种方式设置:索引,aRGB或主题。 索引颜色是旧版实现,颜色本身取决于工作薄或应用程序默认提供的索引。主题颜色可用于互补色,但也取决于工作薄中存在的主题,因此,建议使用RGB颜色。 有着一定的参考价值,有需要的朋友可以参考一下可使用的第三方库python中处理excel表格…

    2024年5月23日
    4700
  • 关于linuxjpeg下载的信息

    请问怎么用grub2直接引导win10,本人Linux新手 第一步,当然是下载linux ubuntu1x的镜像了,这个小伙伴可以百度,去正规的网站现在,这里,我先提供一个站点:mirrors.xmu.edu.cn,厦门大学的信息与网络中心。里面有很多linux版本。有Deepin CenOS ubuntu什么什么的。 第一步:\x0d\x0a当然是下载Ub…

    2024年5月23日
    5400
  • 关于excel2013vc的信息

    如何利用VC++自动生成Excel表格 1、首先,我们需要点击文件菜单栏按钮。然后,我们点击生成EXE按钮。接下来,我们点击保存路径。然后,我们输入我们想要保存的文件名。最后,我们点击确定按钮。然后,我们便可以看到,在桌面生成了Excel表格了。 2、在主对话框中加入一个按钮 ID IDC_EXCELTEST Caption Test Excel 双击该按钮…

    2024年5月23日
    5400
  • 关于2t硬盘linux分区的信息

    linux硬盘2TB限制问题 1、Linux中进行磁盘分区一般是用fdisk这个命令,但是fdisk命令无法支持大于2TB以上的分区,而parted命令却是用于2TB以上大小的磁盘分区的工具。 2、asm无法识别2t磁盘是因为在分区的时候造成的,所以asm和linux都会有这个2T的限制。磁盘分区主要有MBR和GPT两种方式,发生2T限制的正是这个MBR方式…

    2024年5月23日
    8300
  • 关于linux下载geneontology的信息

    下载GO/KEGG某一pathway的genelist 功能(GO)或者通路(Pathway)富集分析时,都会涉及到 Background; 做分析时,分析工具会提供一些数据供使用者选择或者使用自定义的gene list。 clusterProfiler是一个功能强大的R包,同时支持GO和KEGG的富集分析,而且可视化功能非常的优秀,本章主要介绍利用这个R包…

    2024年5月23日
    5100
  • 关于linux下的mnt目录的信息

    Linux目录结构 总体而言,Linux系统的文件系统由块设备、分区、文件系统、目录结构、文件和元数据以及挂载点等组成。这种组织结构和层次关系提供了对文件和目录的有效管理和访问机制。 根目录和家目录均只是一种linux文件挂载点,linux采用树状发展目录结构根目录就是第一级,家目录与根目录看起来只是一个一级目录和二级目录的关系,实际上差别很大。 首先,打开…

    2024年5月23日
    5500

发表回复

登录后才能评论



关注微信