导航:首页 > 编程语言 > redisjava查询

redisjava查询

发布时间:2023-05-17 23:36:49

1. java代码中 单表查询出的list集合 怎么读写到redis中

查询出来的结果集是返回一个List,然后你倒序添加数据到redis里面就可以了。
// 返回一个数据库查询结果集,list
List<Map> list = userService.getUserList();

//倒序把数据放进去就好了,不然取出来的数据,跟你查询出来的结果数据是相反的
for (int i = list.size() - 1; i >= 0; i--) {
RedisPool.getClient().lpush("userList", list.get(i).toString());
}
----------------------------下面是RedisPool类-------------

import redis.clients.jedis.Jedis;

/**
* redis缓存运用
*
* @author TongJun
*
*/
public class RedisPool {

// redis 对象
private static Jedis jedis = null;
private static final String IP = "127.0.0.1";
private static final int PROT = 6379;

/**
* 单例模式构造redis对象
*
* @return
*/
public static synchronized Jedis getClient() {
if (jedis == null) {
jedis = new Jedis(IP, PROT);
}
return jedis;
}

}

2. 关于java redis的操作jedis的疑问

ava操作redis的jedis的范围查询是怎么写的? 我要从一个范围到另一个范围的区间

我试过了,
List userList = jedis.lrange("userList", 0, -1);

Set user = jedis.zrange("user", 0, -1);

这两个范围查询的得到结果,为何都是 0

但是我用 Set str =jedis.keys("tes2:*");

发现是用完整的数据的,我一次性读取这么多数据,redis直接socket失败了
它是专为 .NET 平台设计的一种静态类型编程语言。 Nemerle 中的程序会被编译成中间语言字节码。它支持函数式,命令式以及面向对象编程。

3. 如何用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也提供了客户端分布式操作的方式,采用一致性哈希算法
// 生成多机连接信息列表
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
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!

4. 如何用Java和Redis设计一个高效的先入先出的队列

分析:
redis的list底层是多个ziplist结构组成的“双向”链表。中间部分还压缩了一下。
最外层是由两个哈希表构成的dict。
哈希表的get(key)时间复杂度为O(1),而且这个O(1)理论上不会因为所占内存的大小和元素数目所改变。list的出队列和入队操作也都是O(1)。
Java的队列时间复杂度也应为O(1)。

可不可以直接用redis的list做先进先出?

情况1,数据数量不多,可以用
情况2,数据量多,但存的数据是激活码这样简单值一类,可以用。
情况3,list存的是要获取数据的索引,大量数据的值已经存在redis的KV结构中。
这时候,如果数据每次获取下一个数据都要执行redis的hash查找(O(1))然后redis的list从头或者末尾出一个。经过网络IO返回,Java程序在用出来的key去请求redis去get(key) (O(1))。这里是两次网络IO或者进程间的IO。
这时候,可以不用redis的list存索引而只是用redis大的KV哈希结构存键值。用①Java的队列先进先出获取下一个key或者②使用预先规定好的键生成的规则,让键是有规则有顺序的,比如自增ID,然后每次获取都是ID++,而直接从redis.get(ID.next());来获取值。

最后一种就是最高效的办法,为了特殊场景的高效出队列而设计。但是如果只是一般的数据量,使用redis的list也未尝不可。

阅读全文

与redisjava查询相关的资料

热点内容
小公司如何选择服务器 浏览:791
android指纹识别驱动 浏览:447
荣耀手机的系统有方舟编译器吗 浏览:629
单片机应用的论文 浏览:474
什么app可以查网购的真伪 浏览:444
培训班的程序员怎么样找工作 浏览:813
codeblocks编译器位数 浏览:447
bios加密怎么设置 浏览:349
台电u盘加密大师损坏 浏览:850
secure网站加密 浏览:124
电视显示加密是怎么回事 浏览:6
hadoophdfs书籍源码 浏览:584
电极服务器什么意思 浏览:10
MI预编译系统 浏览:596
python数据筛选教程 浏览:965
dell服务器怎么风扇一直叫 浏览:27
巴巴腾使用什么APP 浏览:216
程序员与it 浏览:805
农民种地用什么app 浏览:665
视频彩铃为什么服务器升级失败 浏览:588