IDEA连接Redis
1、创建一个Maven项目



2、在src下的pom.xml文件里,添加相关包引用
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.otwb</groupId>
<artifactId>redisLink</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!--用于单元测试的包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--mysql数据库的jdbc驱动包:用于连接mysql数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<!--redis数据库的连接驱动包-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!--数据库工具包:用于操作数据库-->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.5</version>
</dependency>
<!--对象池驱动包:用于存放我们需要池化的对象,如创建redis数据库连接池-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.5.0</version>
</dependency>
<!--c3p0数据库连接池包-->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
</dependencies> </project>

3、创建redis连接池工具包
package utils; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; public class RedisUtils {
//服务器IP地址
private static String ADDR = "43.109.234.69";
//端口
private static int PORT = 6379;
//连接超时的时间
private static int TIMEOUT = 10000;
//密码
private static String AUTH = "123";
//数据库模式是16个数据库(0~15),这里设置第一个为默认数据库
public static final int DEFAULT_DATABASE = 0;
//连接实例的最大连接数
private static int MAX_ACTIVE = 1024;
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private static int MAX_IDLE = 200;
//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
private static int MAX_WAIT = 10000;
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private static boolean TEST_ON_BORROW = true;
//创建一个redis数据库连接池
private static JedisPool jedisPool = null; //初始化Redis连接池(静态代码块)
static {
try {
//新建连接池的配置参数
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//指定连接实例的最大连接数
jedisPoolConfig.setMaxTotal(MAX_ACTIVE);
//指定一个pool最多有多少个状态为idle(空闲的)的jedis实例
jedisPoolConfig.setMaxIdle(MAX_IDLE);
//指定等待可用连接的最大时间,单位毫秒
jedisPoolConfig.setMaxWaitMillis(MAX_WAIT);
//在borrow一个jedis实例时,是否提前进行validate操作
jedisPoolConfig.setTestOnBorrow(TEST_ON_BORROW);
//初始化Redis连接池
jedisPool = new JedisPool(jedisPoolConfig, ADDR, PORT, TIMEOUT,AUTH,DEFAULT_DATABASE);
//jedisPool = new JedisPool(jedisPoolConfig, ADDR, PORT);
} catch (Exception e) {
e.printStackTrace();
}
} //获取Jedis实例
public synchronized static Jedis getJedis() {
try {
if (jedisPool != null) {
Jedis jedis = jedisPool.getResource();
System.out.println("redis--服务正在运行: "+jedis.ping());
return jedis;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
} //释放资源
public static void returnResource(final Jedis jedis) {
if(jedis != null) {
jedisPool.returnResource(jedis);
}
}
}
4、在src——main——java下添加RedisLinkTest类,测试连接操作Redis数据库
import org.junit.Test;
import redis.clients.jedis.Jedis;
import utils.RedisUtils; import java.util.Iterator;
import java.util.List;
import java.util.Set; public class RedisLinkTest {
//@Test表示这个方法是单元测试的方法
//连接并添加String类型数据
@Test
public void fun1() {
//直接连接redis数据库
Jedis jedis = new Jedis("43.109.234.69",6379);
//设置连接密码
jedis.auth("123");
//添加String类型数据
jedis.set("field1","i am field1");
//输出添加的数据(根据键,输出对应的值)
System.out.println(jedis.get("field1"));
//删除String类型数据(根据键删除)
jedis.del("field1");
//输出数据,查看是否删除成功
System.out.println(jedis.get("field1"));
} //连接并添加hash类型数据(我理解为给String类型的数据进行了分类,每个hash可以存储2^32-1个键值对)
@Test
public void fun2(){
//通过连接池方式连接redis数据库
Jedis jedis = RedisUtils.getJedis();
//添加hash类型数据
jedis.hset("hset1","name","张三");
jedis.hset("hset1","age","22");
jedis.hset("hset1","sex","男");
//获取数据
List<String> hmget = jedis.hmget("hset1", "name","age","sex");
//输出
System.out.println(hmget);
//删除
jedis.hdel("hset1","name","sex");
//删除后再输出,看看是否删除成功
System.out.println(jedis.hmget("hset1", "name","age","sex"));
RedisUtils.returnResource(jedis);
} //连接并添加List类型数据(队列,按照插入顺序排序,可以添加一个元素到列表的头部(左边),或者尾部(右边))
@Test
public void fun3() {
//通过连接池方式连接redis数据库
Jedis jedis = RedisUtils.getJedis();
//添加List类型数据,lpush添加到列表头部,即后添加的数据在最前面
jedis.lpush("field2","aaa");
jedis.lpush("field2","bbb");
jedis.lpush("field2","ccc");
//从索引1的位置获取到索引6位置的值,因为超出了实际索引2,所以后面会继续循环输出
List<String> field2 = jedis.lrange("field2", 0, 6);
//输出添加的键值对
for(String item:field2){
System.out.println(item);
}
RedisUtils.returnResource(jedis);
} //连接并添加Set类型数据(一堆不重复值的组合)
@Test
public void fun4(){
//通过连接池方式连接redis数据库
Jedis jedis = RedisUtils.getJedis();
//添加Set类型数据
jedis.sadd("name","zhangsan");
jedis.sadd("name","lisi");
jedis.sadd("name","lisi"); //同一个数据再次添加,会覆盖上一次的
jedis.sadd("age","16");
jedis.sadd("sex","nan");
jedis.sadd("address","china");
//获取Set类型数据
Set<String> name = jedis.smembers("name");
//输出获取到的Set类型数据(输出的顺序是无序的)
System.out.println(name);
System.out.println("\n");
//获取当前redis数据库中,所有key,以Set集合的方式返回数据
Set<String> set = jedis.keys("*");
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
RedisUtils.returnResource(jedis);
} //连接并添加ZSet类型数据(zset是set的升级版,它在set的基础上增加了顺序属性score,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序)
@Test
public void fun5(){
//通过连接池方式连接redis数据库
Jedis jedis = RedisUtils.getJedis();
//添加zset型数据
jedis.zadd("field3",1,"hhh");
jedis.zadd("field3",0,"jjj");
jedis.zadd("field3",3,"bbb");
//获取set型数据
Set<String> field3 = jedis.zrangeByScore("field3", 0, 5);
//用迭代器循环输出
Iterator<String> iterator = field3.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
RedisUtils.returnResource(jedis);
}
}






。
IDEA连接Redis的更多相关文章
- 用Jedis连接Redis
jedis中的方法名,和Redis的命令几乎一样 1.jar包,作为测试只需要一个jar 2.代码 package com; import java.util.HashMap; import java ...
- 使用可视化工具redisclient连接redis
可视化工具推荐:http://database.51cto.com/art/201505/477692.htm 1.连接redis服务端 1.1 设置连接密码:在redis根目录下,双击redis-c ...
- 关于Jedis连接redis出现问题
环境说明: redis服务器系统:ubuntu ip 192.168.10.9 port 6379 两台电脑:一个作为专门的服务器,一个是开发环境,以下一顿操作皆基于开发环境. 就这样的简单的代码连接 ...
- Redis系列-远程连接redis并给redis加锁
假设两台redis服务器,ip分别为:192.168.1.101和192.168.1.103,如何在101上通过redis-cli访问103上的redis呢?在远程连接103之前,先讲下redis-c ...
- redis在.net架构中的应用(1)--使用servicestack连接redis(转)
引言:作为少有的.net架构下的大型网站,stackoverflow曾发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/sta ...
- php安装redis扩展连接redis服务器
扩展包的下载地址:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz tar xf phpredis-2.2.4.tar.gz cd ...
- Java连接redis的使用演示样例
Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...
- 在Linux平台上用ASP.NET 5 连接Redis服务器
最近在做一个Linux平台上基于ASP.Net 5 中间件+Redis+Mysql架构的系统,研究使用了 StackExchange.Redis 作为asp.net5连接redis的工具.作者在前几天 ...
- 利用servicestack连接redis
利用servicestack连接redis 引言:作为少有的.net架构下的大型网站,stackoverflow今日发表了一篇文章,介绍了其技术体系,原文链接http://highscalabilit ...
- 使用Java连接Redis
下载redis的驱动包:Jedis.下载地址:https://mvnrepository.com/artifact/redis.clients/jedis/2.9.0 打开IDE,我使用的是Eclip ...
随机推荐
- java 实现基于opencv全景图合成
因项目需要,自己做了demo,从中学习很多,所以分享出来,希望有这方面需求的少走一些弯路,opencv怎么安装网上教程多多,这里不加详细说明,我安装的opencv-3.3.0 如上图所示,找到相应的j ...
- Ubuntu18.04 安装谷歌BBR
说明:Ubuntu 18.04前几天发布了,改变挺大的,内核也直接升到了正式版4.15,而BBR内核要求为4.9,也就是说满足了,所以我们不需要换内核就可以很快的开启BBR,这里简单说下方法. 提示: ...
- Mybaits 源码解析 (五)----- 面试源码系列:Mapper接口底层原理(为什么Mapper不用写实现类就能访问到数据库?)
刚开始使用Mybaits的同学有没有这样的疑惑,为什么我们没有编写Mapper的实现类,却能调用Mapper的方法呢?本篇文章我带大家一起来解决这个疑问 上一篇文章我们获取到了DefaultSqlSe ...
- Pandas | 17 缺失数据处理
数据丢失(缺失)在现实生活中总是一个问题. 机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题. 在这些领域,缺失值处理是使模型更加准确和有效的重点. 使用重构 ...
- 列表[‘hello’ , ‘python’ ,’!’ ] 用多种方法拼接,并输出’hello python !’ 以及join()在python中的用法简介
列表[‘hello’ , ‘python’ ,’!’ ] 用多种方法拼接,并输出’hello python !’ 使用字符串链接的四种方法都可以创建 字符串拼接一共有四种方法,也可以应用到列表的拼接中 ...
- 谁说搞Java的不能玩机器学习?
简介 机器学习在全球范围内越来越受欢迎和使用. 它已经彻底改变了某些应用程序的构建方式,并且可能会继续成为我们日常生活中一个巨大的(并且正在增加的)部分. 没有什么包装且机器学习并不简单. 它对许多人 ...
- 使用Bind提供域名解析服务(反向解析)
小知识: 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名 ...
- 使用Typescript重构axios(二十二)——请求取消功能:收尾
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- 使用Typescript重构axios(三十一)——添加axios.all和axios.spread方法
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- 使用Typescript重构axios(三十二)——写在最后面(总结)
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...