使用Java来操作Redis,Jedis是Redis官方推荐使用的Java连接redis的客户端。
1.导入依赖

2.启动redis服务,测试连接
public class TestPing {
//测试 redis连接
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
System.out.println( jedis.ping()); //PONG
}
}
3.操作redis
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
System.out.println( jedis.ping()); //PONG
//获取所有key
System.out.println(jedis.keys("*"));
//删除当前数据库所有数据
System.out.println(jedis.flushDB());
//新增数据
System.out.println(jedis.set("name","zhangsan"));
System.out.println(jedis.set("password","123"));
//展示数据
System.out.println("name ="+jedis.get("name"));
System.out.println("password ="+jedis.get("password"));
//判断存在
System.out.println("存在name ? "+jedis.exists("name"));
System.out.println("存在name2 ? "+jedis.exists("name2"));
//数据库大小
System.out.println("大小 "+jedis.dbSize());
//删除所有数据
jedis.flushAll();
System.out.println(jedis.keys("*"));
//关闭连接
jedis.close();
常用api
public class TestString {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
//jedis.flushDB();
System.out.println("===========增加数据===========");
System.out.println(jedis.set("key1","value1"));
System.out.println(jedis.set("key2","value2"));
System.out.println(jedis.set("key3", "value3"));
System.out.println("删除键key2:"+jedis.del("key2"));
System.out.println("获取键key2:"+jedis.get("key2"));
System.out.println("修改key1:"+jedis.set("key1", "value1Changed"));
System.out.println("获取key1的值:"+jedis.get("key1"));
System.out.println("在key3后面加入值:"+jedis.append("key3", "End"));
System.out.println("key3的值:"+jedis.get("key3"));
System.out.println("增加多个键值对:"+jedis.mset("key01","value01","key02","value02","key03","value03"));
System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));
System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03","key04"));
System.out.println("删除多个键值对:"+jedis.del("key01","key02"));
System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));
//jedis.flushDB();
System.out.println("===========新增键值对防止覆盖原先值==============");
//命令在指定的 key 不存在时,为 key 设置指定的值。
System.out.println(jedis.setnx("key1", "value1"));
System.out.println(jedis.setnx("key2", "value2"));
System.out.println(jedis.setnx("key2", "value2-new"));
System.out.println(jedis.get("key1"));
System.out.println(jedis.get("key2"));
System.out.println("===========新增键值对并设置有效时间=============");
System.out.println(jedis.setex("key3", 2, "value3"));
System.out.println(jedis.get("key3"));
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(jedis.get("key3"));
System.out.println("===========获取原值,更新为新值==========");
//用于设置指定 key 的值,并返回 key 的旧值。
System.out.println(jedis.getSet("key2", "key2GetSet"));
System.out.println(jedis.get("key2"));
System.out.println("获得key2的值的字串:"+jedis.getrange("key2", 2, 4));
}
}
public class TestMuti {
public static void main(String[] args) {
//创建客户端连接服务端,redis服务端需要被开启
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.flushDB();
JSONObject jsonObject = new JSONObject();
jsonObject.put("hello", "world");
jsonObject.put("name", "java");
//开启事务
Transaction multi = jedis.multi();
String result = jsonObject.toJSONString();
try{
//向redis存入一条数据
multi.set("json", result);
//再存入一条数据
multi.set("json2", result);
//这里引发了异常,用0作为被除数
int i = 100/0;
//如果没有引发异常,执行进入队列的命令
multi.exec();
}catch(Exception e){
e.printStackTrace();
//如果出现异常,回滚
multi.discard();
}finally{
System.out.println(jedis.get("json"));
System.out.println(jedis.get("json2"));
//最终关闭客户端
jedis.close();
}
}
}


SpringBoot整合:
1.导入依赖

2.配置redis

3.测试连接
class SpringbootRedisApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private RedisTemplate myRedisTemplate;
@Test
void contextLoads() throws JsonProcessingException {
// 操作字符串 类似于 String
//redisTemplate.opsForHash();
//redisTemplate.opsForList();
//redisTemplate.opsForSet();
redisTemplate.opsForValue().set("name","zhangsan");
System.out.println(redisTemplate.opsForValue().get("name"));
}
}
3.操作redis
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vnian.pojo.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
@SpringBootTest
class SpringbootRedisApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private RedisTemplate myRedisTemplate;
@Test
void contextLoads() throws JsonProcessingException {
// 操作字符串 类似于 String
redisTemplate.opsForHash();
redisTemplate.opsForList();
redisTemplate.opsForSet();
redisTemplate.opsForValue().set("name","zhangsan");
System.out.println(redisTemplate.opsForValue().get("name"));
//提供了部分基本操作 事务+expire+delete
redisTemplate.keys("*");
redisTemplate.multi();
redisTemplate.delete("name");
System.out.println(redisTemplate.opsForValue().get("name"));
获取redis连接对象
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
connection.flushAll();
connection.close();
connection.flushDb();
//默认如果保存对象,使用jdk序列化机制,序列化后的数据保存到redis中
Student student = new Student("Adele ","28");
redisTemplate.opsForValue().set("student",student);
System.out.println(redisTemplate.opsForValue().get("student"));//Student{name='Adele ', age='28'}
//需要将对象转为json格式存储
/*
* 1.将对象转为json格式
* 2.redis默认的序列化规则
* */
//1.
String jsonStudent = new ObjectMapper().writeValueAsString(student);
redisTemplate.opsForValue().set("jsonStudent",jsonStudent);
System.out.println(redisTemplate.opsForValue().get("jsonStudent"));//{"name":"Adele ","age":"28"}
myRedisTemplate.opsForValue().set("jsonStudent2",student);
System.out.println(myRedisTemplate.opsForValue().get("jsonStudent2"));
}
}
自定义redisTemplate
1.查找配置



默认使用jdk序列化

实体类需要实现序列化接口

自定义序列化方式(存储对象)


版权声明:本文为weize_hh原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。