大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Redis详解(六)Jedis操作Redis
使用jedis在java应用中操作Redis。Jedis几乎涵盖了redis的所有命令。
- jedis源码:https://github.com/redis/jedis
1.下载jedis和commons-pool
<!-- 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。
<!-- 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
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准备
创建一个工具类
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();
}
}
}
使用线程池
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();
}
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197805.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...