Redis详解

本文详细介绍了使用Java的Jedis库操作Redis,包括Jedis对象的创建与使用、Jedis对Redis各种数据类型的处理、JedisPool的使用以解决并发问题,以及如何将Java对象存储到Redis。同时,文章还讨论了Redis与Mybatis的整合,通过自定义cache接口实现MybatisRedisCache,并配置相关标签。最后,提到了Redis与Spring的结合,配置Spring Cache支持,利用注解管理缓存操作。
摘要由CSDN通过智能技术生成

Jedis

1. Jedis 是 Redis 官方首选的 Java 客户端开发包。

Jedis源码地址https://github.com/xetorthio/jedis/release

其相关jar可以从maven的中央仓库中下载:
http://central.maven.org/maven2/redis/clients/jedis/2.9.0/jedis-2.9.0.jar

2.jedis的相关jar包

在java中使用jedis中的api操作redis的时候所需jar包主要有俩个:
	jedis-2.x.jar
	commons-pool2-2.4.2.jar

另外需要一个junit的包进行单元测试:
	junit-4.x.jar

3.Jedis对象的使用

整个过程类似之前使用Connection对象一样,一个Jedis对象就是一个数据库连接对象,这不过这个数据库是Redis(内存数据库)

1)创建Jedis对象

	Jedis jedis = new Jedis();
	或者:
	Jedis jedis = new Jedis("127.0.0.1",6379);
	或者:
	Jedis jedis = new Jedis(new java.net.URI("redis://:passwd@127.0.0.1:6379/0"));
	注意:这里最后一个0代表的时候index为0的数据库
	
	如果没有密码的时候可以这样创建对象
	Jedis jedis = new Jedis(new java.net.URI("redis://127.0.0.1:6379/0"));

2)使用Jedis对象

	使用Jedis的API对redis进行操作,Jedis中的方法名和Redis中命令名基本上一模一样,所以只要了解Redis中命令的作用,那么Jedis中对应的方法的作用也是一样的.

3)关闭Jedis对象

	每个Jedis对象在内部都会建立一个Socket和Redis服务器连接,所以Jedis对象使用完毕后可以进行关闭。


所以在使用junit进行基本的jedis操作测试的时候,可以编写如下代码:
public class RedisTest {
	private Jedis jedis;
	@Before
	public void before(){
		jedis = new Jedis();
	}
	@After
	public void after(){
		jedis.close();
	}
	
	@Test
	public void test(){
		//使用jedis对进行操作
	}
	
}

意思是,在单元测试方法执行之前,junit先调用使用了@Before注解的方法,然后再调用使用了@Test注解的方法,最后再调用使用了@After注解的方法

4.Jedis对Redis中key的操作

@Test
	public void test_key(){
   
		//选择数据库 默认是0
		System.out.println(jedis.select(0));
		//查看当前数据库
		System.out.println(jedis.getDB());
		//查看当前数据库中所有key值
		System.out.println(jedis.keys("*"));
		//判断当前数据库中是否存在名字为name的key值
		System.out.println(jedis.exists("name"));
		//判断key值的在Redis中的数据类型
		System.out.println(jedis.type("name"));
		//查看key的过期时间 单位是毫秒 -1表示永不过期 -2表示已经过去
		System.out.println(jedis.pttl("name"));
		//查看key的过期时间 单位是秒   -1表示永不过期 -2表示已经过去
		System.out.println(jedis.ttl("name"));
		//修改key的名字 不管新名字是否被使用 如果老的key不存在会报错
		System.out.println(jedis.rename("name", "username"));
		//修改key的名字 新名字没有被使用的时候才生效 如果老的key不存在会报错
		System.out.println(jedis.renamenx("username", "name"));
		//把指定的key移动到指定的数据库中(数据库索引表示)
		System.out.println(jedis.move("name",3));
		//在当前数据库中随机获取一个key
		System.out.println(jedis.randomKey());
		//设置指定key的过期时间 单位是秒
		System.out.println(jedis.expire("name", 10));
		//设置指定key的过期时间 单位是毫秒
		System.out.println(jedis.pexpire("name", 5000L));
		//设置指定key的过期时间 时间用时间戳表示
		System.out.println(jedis.expireAt("name", 1000000L));
		//在指定的key过期之前,移除key上的过期时间
		System.out.println(jedis.persist("name"));
		
		//当前数据库中key的数量 返回值Long类型
		jedis.dbSize();
		//清空当前db
		jedis.flushDB();
		//清空所有db
		jedis.flushAll();
	}

5.Jedis对Redis中string的操作

@Test
	public void test_String(){
   
		//设置k-v的值,如果k已经则会覆盖旧值,且无视数据类型
		System.out.println(jedis.set("name", "zhangsan"));
		//获得指定key的值
		System.out.println(jedis.get("name"));
		//通过下标截取指定key的值
		System.out.println(jedis.getrange("name", 0, 3));
		//替换key值,并且返回旧值
		System.out.println(jedis.getSet("name", "briup"));
		//可以连续设置多组K-V
		System.out.println(jedis.mset("name","briup","age","20"));
		//获得多个key分别对应的值
		System.out.println(jedis.mget("name","age"));
		//设置K-V的同时设置一下过期时间,单位是秒
		System.out.println(jedis.setex("password", 10, "123"));
		//设置K-V的同时设置一下过期时间,单位是毫秒
		System.out.println(jedis.psetex("myname", 10000L, "test"));
		//设置K-V,只有指定的key没有被使用的时候才生效
		System.out.println(jedis.setnx("name","tom"));
		//连续设置多组K-V,只有在所有指定的key都没有被使用的时候才生效
		System.out.println(jedis.msetnx("a","testA","b","testB"));
		//使用第三个参数的值,从下标为3的位置开始覆盖指定key的值
		System.out.println(jedis.setrange("name", 3, "aaaa"));
		//返回指定key的值的长度
		System.out.println(jedis.strlen("name"));
		//指定的值自增1 num的值必须是整数
		System.out.println(jedis.incr("num"));
		//指定的值自增5 num的值必须是整数
		System.out.println(jedis.incrBy("num",5));
		//指定的值自减1 num的值必须是整数
		System.out.println(jedis.decr("num"));
		//指定的值自减5 num的值必须是整数
		System.out.println(jedis.decrBy("num", 5));
		//指定的值自增10.5 
		System.out.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值