redis数据库四:jedis
文章目录
前言
jedis是redis的java版本的客户端实现。也可以说是redis数据库的工具。
一、jedis的简单使用
第一步:我使用的IDE是idea,所以呢大家先在自己的IDE中创建一个web项目啦,其它的IDE我没有试过,所以呢这里我就记录我自己的操作过程,然后呢需要导入两个jar包,这个大家可以自己去下载,版本没必要跟我的一样,匹配就行。
1.commons-pool2-2.3.jar
2.jedis-2.7.0.jar
添加完jar包之后呢,不要忘了将lib添加到当前模块哦,
鼠标放到lib上右键——Add as Library,注意红色箭头那里的选项哦。
第二步:下面就来简单测试一下吧,在src里面创建哦,写一个这样的单元测试:
public class JedisTest {
@Test
public void test1(){
//1.获取连接,设置主机ip:localhost或者127.0.0.1,还有端口6379
Jedis jedis = new Jedis("localhost",6379);
//操作,这里存储键-值
jedis.set("username","zhangsan");
//关闭连接
jedis.close();
}
我们在单元测试之前先来在redis客户端里面查看数据库有数据没,结果显示是没有的:
然后我们运行单元测试的代码,运行完之后,再来查数据,查询到的数据就是上面java通过jedis存储到redis数据库的数据:
至此,jedis的一个快速入门的使用就演示完毕啦。
二、jedis操作各种redis数据结构
之前呢简单介绍过redis的五种数据类型,那在java中如何通过jedis来操作这5中数据类型呢?下面就简单的逐个演示一下吧!
1. String数据结构操作
我还是在上面的那个java文件中用单元测试的方式写下面的代码,
@Test
public void test2(){
//1.获取连接,可以不设置参数,默认就是localhost和6379
Jedis jedis = new Jedis("localhost",6379);
//2.操作,存储数据
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
/*可以使用setex()方法存储可以指定过期时间的key value
将hello:world键值对存入redis,并且自动20秒后自动删除它
*/
jedis.setex("hello",20,"world");
//3.关闭连接
jedis.close();
}
运行单元测试,然后查询redis数据库:
2. hash数据结构操作
@Test
public void test3(){
//1.获取连接,设置主机ip:localhost或者127.0.0.1,还有端口6379
Jedis jedis = new Jedis("localhost",6379);
//2.操作
//存储hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","male");
//获取hash
String name = jedis.hget("user","name");
System.out.println(name);
//获取hash的所有map的数据
Map<String, String> user = jedis.hgetAll("user");
//keyset
Set<String> keyset = user.keySet();
for (String key:keyset){
String value = user.get(key);
System.out.println(key+":"+value);
}
//关闭连接
jedis.close();
}
同样的在,我们运行单元测试后在数据库中查询一下吧,查询的命令我就不赘述的,前面的博文里有:
3. list数据结构操作
@Test
public void test4(){
//1.获取连接,设置主机ip:localhost或者127.0.0.1,还有端口6379
Jedis jedis = new Jedis("localhost",6379);
//2.操作
//存储list
jedis.lpush("mylist","a","b","c"); //从左边存
jedis.rpush("mylist","a","b","c"); //从右边存
//list范围获取
List<String> mylist = jedis.lrange("mylist",0,-1);
System.out.println(mylist);
//list弹出,从左边弹出第一个元素
String element1 = jedis.lpop("mylist");
System.out.println(element1);
//从右边弹出第一个元素
String element2 = jedis.rpop("mylist");
System.out.println(element2);
//list范围获取
List<String> mylist2 = jedis.lrange("mylist",0,-1);
System.out.println(mylist2);
//关闭连接
jedis.close();
}
这里展示一下控制台的输出,方便理解lpop和rpop:
4. set 数据结构操作
@Test
public void test5(){
//1.获取连接
Jedis jedis = new Jedis("localhost",6379);
//2.操作,set存储,myset是key,可以存多个值
jedis.sadd("myset","java","php","c++");
//set获取
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
//关闭连接
jedis.close();
}
操作跟上面的一样,废话不多说,直接上截图:
5. sortedset数据结构的操作
@Test
public void test6(){
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
// sortedset 存储
jedis.zadd("mysortedset",3,"亚瑟");
jedis.zadd("mysortedset",30,"后裔");
jedis.zadd("mysortedset",55,"孙悟空");
// sortedset 获取
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset);
//3. 关闭连接
jedis.close();
}
客户端查询一下吧,这里呢我顺便记录一下我查询时遇到的小错误以及解决办法:
控制台输出:
redis客户端输出:出现中文乱码问题:
然后我在上查询了一下,有说改默认字体为Lucida Console的,也有说在命令行使用redis-cli.exe --raw这个命令来启动客户端的,但是我都亲身试了一下,的确是不乱码,但是却又是这样的:
问题原因:因为字符编码的原因,带大家看一下,在dos窗口边缘处(下图)单击右键——属性——选项
好啦,现在开始解决上面的问题:
第一步:在redis安装文件目录下打开dos:
第二步:输入指令:chcp 65001将GBK编码转到UTF8,当然还要改默认字体为Lucida Console哦(边缘部分右键——默认值——字体——Lucida Console)
第三步:再来查询一下试试:
好啦,在java中通过jedis简单的操作redis数据库的五种数据类型就介绍完毕啦,希望能对大家有一些帮助。
三、jedis连接池:jedisPool
这个就简单赋个代码吧,后面还可以用工具类操作的,这里就简单介绍下:
@Test
public void test7(){
//0.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); //设置最大的连接数
config.setMaxIdle(10); //最大空闲时间
//1.创建jedisPool连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
//2.调用方法getResource获取jedis连接
Jedis jedis = jedisPool.getResource();
//3.使用
jedis.set("hehe","heihei");
//4.关闭,归还到连接池中
jedis.close();
}
来获取一下吧:
总结
到这里在java中通过jedis简单的操作redis数据库就简单介绍完啦,因为使用的IDE可能各不相同,也会有一些差异,自己也是新手小白,就记录一下自己所学的,希望可以帮助到大家(喜欢可以点个赞,哈哈),如有不足之处欢迎留言指正,虚心求教。