一、Redis
1.开启redis
可以点击根目录下的redis-server启动也可以在cmd控制面板中输入redis-server.exe ./redis.windows.conf来启动
看到如图所示视图这开启成功(使用cmd和配置文件的方法开启redis服务时,可以同时开启多个端口号不同的redis服务)
2.在idea中引入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.3</version>
</dependency>
3.创建测试类并进行一系列操作
public void getJedis(){
//创建jedis配置类对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//设置最大共享数量
jedisPoolConfig.setMaxIdle(10);
//创建最大连接数量
jedisPoolConfig.setMaxTotal(30);
//创建连接池对象
JedisPool jedisPool = new JedisPool(jedisPoolConfig,"127.0.0.1",6379);
//获取连接对象操作数据
Jedis jedis = jedisPool.getResource();
//进行字符串存取操作
jedis.set("pool","sssss");
jedis.get("pool");
//创建一个map集合
HashMap<String, String> map = new HashMap<>();
map.put("name","yaya");
map.put("age","20");
//进行哈希表存入操作
jedis.hset("person",map);
//去除哈希表单条记录
String name = jedis.hget("person", "name");
//取出整个哈希表
Map<String, String> person = jedis.hgetAll("person");
//右压缩作为例子,左压缩只需将lpush和lpop的首字母改为r
//进行右压缩存入
jedis.lpush("list","name","heizi");
jedis.lpush("list","age","23");
//进行做弹出取值,从左边依次弹出(将元素取出并删除)
String list = jedis.lpop("list");
//取出所有右压缩的值(左右压缩通用)
List<String> list1 = jedis.lrange("list", 0, -1);
//操作set类型
jedis.sadd("setList","aaa","bbb","ccc");
//将set类型存入的对应的键的所有值取出
Set<String> setList = jedis.smembers("setList");
//存入zSet类型的值(排序set,排序的依据字段存在score属性中:第二个属性)
jedis.zadd("sortSet",20,"张三");
jedis.zadd("sortSet",21,"李四");
jedis.zadd("sortSet",18,"王五");
//将所有zSet类型存入的值取出(取出后已经排好序)
List<String> sortSet = jedis.zrange("sortSet", 0, -1);
//关闭jedis
jedis.close();
}
4.封装Redis (将上述代码的公共部分封装)
4.1创建jedis.properties文件
host=127.0.0.1
port=6379
maxIdle=10
maxTotal=30
4.2创建jedis工具类
public class JedisUtils {
private static JedisPool jedisPool = null;
static {
InputStream resource = JedisUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties properties = new Properties();
try {
properties.load(resource);
//创建配置类
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//设置最大共享数量
jedisPoolConfig.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
//创建最大连接数量
jedisPoolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
//创建连接对象
jedisPool = new JedisPool(jedisPoolConfig, properties.getProperty("host"), Integer.parseInt(properties.getProperty("port")));
} catch (IOException e) {
throw new RuntimeException("创建连接,获取Jedis失败");
}
}
/**
* 创建并返回Jedis对象类似Jedis对象工厂
*
* @return返回创建的Jedis对象
*/
public static Jedis getJedis() {
//返回获取的连接对象操作数据
return jedisPool.getResource();
}
/**
* 关闭jedis对象
*
* @param jedis 需要关闭的jedis对象
*/
public static void jedisClose(Jedis jedis) {
jedis.close();
}
}
4.3使用工具类
public class JedisTest {
public void testJedis() {
Jedis jedis = JedisUtils.getJedis();
//进行字符串存取操作
jedis.set("pool", "sssss");
jedis.get("pool");
//创建一个map集合
HashMap<String, String> map = new HashMap<>();
map.put("name", "yaya");
map.put("age", "20");
//进行哈希表存入操作
jedis.hset("person", map);
//去除哈希表单条记录
String name = jedis.hget("person", "name");
//取出整个哈希表
Map<String, String> person = jedis.hgetAll("person");
//右压缩作为例子,左压缩只需将lpush和lpop的首字母改为r
//进行右压缩存入
jedis.lpush("list", "name", "heizi");
jedis.lpush("list", "age", "23");
//进行做弹出取值,从左边依次弹出(将元素取出并删除)
String list = jedis.lpop("list");
//取出所有右压缩的值(左右压缩通用)
List<String> list1 = jedis.lrange("list", 0, -1);
//操作set类型
jedis.sadd("setList", "aaa", "bbb", "ccc");
//将set类型存入的对应的键的所有值取出
Set<String> setList = jedis.smembers("setList");
//存入zSet类型的值(排序set,排序的依据字段存在score属性中:第二个属性)
jedis.zadd("sortSet", 20, "张三");
jedis.zadd("sortSet", 21, "李四");
jedis.zadd("sortSet", 18, "王五");
//将所有zSet类型存入的值取出(取出后已经排好序)
List<String> sortSet = jedis.zrange("sortSet", 0, -1);
//关闭jedis
JedisUtils.jedisClose(jedis);
}
}