大家好,又见面了,我是你们的朋友全栈君。
文章目录
- Redis详解(六)Jedis操作Redis
- 1.下载jedis和commons-pool
- 单独使用jedis
- 2.Java应用使用Jedis准备
- 1.下载jedis和commons-pool
Redis详解(六)Jedis操作Redis
使用jedis在java应用中操作Redis。Jedis几乎涵盖了redis的所有命令。
- jedis源码:https://github.com/redis/jedis
1.下载jedis和commons-pool
代码语言:javascript复制<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.1.1</version>
</dependency>
jedis可以单独使用,一般和Commons-Pool一起使用,有多个线程单独操作redis。
代码语言:javascript复制<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.11.1</version>
</dependency>
单独使用jedis
代码语言:javascript复制package com.firewolf;
import redis.clients.jedis.Jedis;
import java.util.List;
public class StringRedisPrimary {
public static void main(String[] args) {
// redis所在的linux的ip
String host = "127.0.0.1";
// redis的运行端口
int port = 6379;
// 创建jedis对象,通过jedis的方法,操作redis数据
Jedis jedis = new Jedis(host,port);
// 设置访问密码
// jedis.auth("123456");
// 通过jedis的方法操作redis数据
jedis.set("eat","减脂餐");
// 获取数据
System.out.println("eat=" jedis.get("eat"));
// 创建多个key-value
jedis.mset("lunch","红烧牛肉面","dinner","左旋溜达鸡");
// 获取多个值
List<String> values = jedis.mget("eat","lunch","dinner");
for (String v:values){
System.out.println(v);
}
// 查询id=1 Student,key == student:1
if(jedis.exists("student:1")){
String student = jedis.get("student:1");
}else {
// 访问数据库,Student 对象
// 把Student转为json数据
jedis.set("student:1","{student}");
}
}
}
2.Java应用使用Jedis准备
创建一个工具类
代码语言:javascript复制package com.firewolf.utils;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisUtils {
// JedisPool有一个就够用了
private static JedisPool pool;
// 创建线程池
public static JedisPool open(String host,int port){
if(pool==null){
// 设置线程池的参数
JedisPoolConfig config = new JedisPoolConfig();
// 设置最大线程数量
config.setMaxTotal(100);
// 设置空闲数
config.setMaxIdle(2);
// 设置检查项为true,避免null的情况 确保线程池获取的对象是可用的。
config.setTestOnBorrow(true);
// 创建JedisPool 6000是超时时间:6秒钟没有连接到redis就放弃
pool = new JedisPool(config,host,port,6000);
// 带密码情况
// pool = new JedisPool(config,host,port,6000,"123456");
}
return pool;
}
// 关闭线程池,在整个程序结束后执行
public static void close(){
if(pool!=null){
pool.close();
}
}
}
使用线程池
代码语言:javascript复制package com.firewolf;
import com.firewolf.utils.RedisUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import java.util.List;
public class StringRedisPrimaryPool {
public static void main(String[] args) {
String host = "127.0.0.1";
int port = 6379;
Jedis jedis = null;
JedisPool pool= null;
try{
// 获取pool,从pool中获取jedis对象
pool = RedisUtils.open(host,port);
jedis = pool.getResource();
jedis.set("eat","减脂餐");
// 获取数据
System.out.println("eat=" jedis.get("eat"));
// 查询id=1 Student,key == student:1
if(jedis.exists("student:1")){
String student = jedis.get("student:1");
}else {
// 访问数据库,Student 对象
// 把Student转为json数据
jedis.set("student:1","{student}");
}
}finally {
// 把使用完毕的jedis放回到Pool中,让其他客户端使用
if(jedis!=null){
jedis.close();
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197805.html原文链接:https://javaforall.cn