redis封装类 Java,redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)...

在项目的pom文件中导入 操作redis所需要的依赖:

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">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.2.RELEASE

com.example

springboot-redis

0.0.1-SNAPSHOT

springboot-redis

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-data-redis

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

org.apache.directory.studio

org.apache.commons.lang

2.6

redis.clients

jedis

org.springframework.boot

spring-boot-maven-plugin

新建RedisTemplateUtil  注入 RedisTemplate

package com.example.demo.redisutil;

import java.util.Arrays;

import java.util.HashMap;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import java.util.concurrent.TimeUnit;

import javax.annotation.Resource;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.stereotype.Component;

import org.springframework.util.CollectionUtils;

@Component

public class RedisTemplateUtil {

@Resource

private RedisTemplate redisTemplate;

使用RedisTemplate  操作 String类型的数据:

1,将String类型存入到Redis当中:

/**

* redisTemplate操作普通字符串(存值)

*

* @param key

* @param value

*/

public void redisSetString(String key, String value) {

redisTemplate.opsForValue().set(key, value);

}

2,从redis当中取出String类型的数据:

/**

* redisTemplate操作普通字符串 (取值)

*

* @param key

*/

public Object redisGetString(String key) {

return redisTemplate.opsForValue().get(key);

}

3.设置reids key的过期时间(原来出现过设置过期时间不起作用,是因为先设置了过期时间 在去存入值到redis ):

/**

*

* 指定缓存失效时间

*

* @param key

* 键

*

* @param time

* 时间(秒)

*

* @return

*

*/

public boolean expire(String key, long time) {

try {

if (time > 0) {

redisTemplate.expire(key, time, TimeUnit.SECONDS);

}

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

使用RedisTemplate  操作List类型的数据:

1,将list类型存入到Redis当中:

/**

* 将一个list集合存放到redis当中

*

* @param key

*/

public void redisSetList(String key) {

List list = Arrays.asList(9, 2, 3, 4);

for (Integer integer : list) {

// 从当前的数据 向右添加

// redisTemplate.opsForList().rightPush(key, integer);

// 从当前的数据 向左添加

redisTemplate.opsForList().leftPush(key, integer);

}

}

2,从redis中取出list数据:

/**

* 获取list(获取0 -10 索引的数据)

*

* @param key

* @return

*/

public Object getList(String key) {

return redisTemplate.opsForList().range(key, 0, 10);

}

3.获取redis中list的长度:

/**

* 获取list指定key的长度

*

* @param key

* @return

*/

public Long getListSize(String key) {

return redisTemplate.opsForList().size(key);

}

使用RedisTemplate  操作hash类型的数据:

1.将hash存放到redis当中:

/**

* 将map存放到reids

*

* @param key

*/

public void setHash(String key) {

Map hashMap = new HashMap<>();

//使用RedisTemplate 有些情况会乱码

hashMap.put("redis", "redis");

hashMap.put("mysql", "mysql");

for (Entry keyValue : hashMap.entrySet()) {

redisTemplate.opsForHash().put(key, keyValue.getKey(), keyValue.getValue());

}

}

2.将hash从redis当中取出来 根据具体的key取出具体的值:

/**

* 获取指定key1的值

*

* @param key

* @param key1

* @return

*/

public Object getHash(String key, String key1) {

// 检测 是否 存在该键

boolean isKey = redisTemplate.opsForHash().hasKey(key, key1);

return redisTemplate.opsForHash().get(key, key1);

}

3.将key中所有的值都取出来:

/**

* 获取指定key的所有值

*

* @param key

*

* @return

*/

public Object getHash(String key) {

return redisTemplate.opsForHash().entries(key);

}

4.根据具体的key移除具体的值:

/**

* 根据具体key移除具体的值

*

* @param key

*

* @return

*/

public void removeKey(String key, String key1) {

redisTemplate.opsForHash().delete(key, key1);

}

5.移除key值 则key里面的所有值都被移除:

public void removeStringKey(String key) {

redisTemplate.delete(key);

}

使用RedisTemplate  操作set类型的数据:

1.set数据存入redis中

/**

* set存入redis中

*

* @param key

*/

public void setSet(String key) {

Set set = new HashSet<>();

set.add("setKey");

set.add("tesetKey");

for (Object object : set) {

redisTemplate.opsForSet().add(key, object);

}

}

2.从redis当中将set数据取出来:

/**

* 从redis中取出set

*

* @param key

* @return

*/

public Object getSet(String key) {

return redisTemplate.opsForSet().members(key);

}

使用RedisTemplate  操作sortset类型的数据:

1.将sortSet存放到redis当中:

/**

* sortset存入redis中

*

* @param key

*/

public void setZSet(String key) {

Set set = new HashSet<>();

set.add("setKey");

set.add("tesetKey");

int i = 0;

for (Object object : set) {

i++;

redisTemplate.opsForZSet().add(key, object, i);

}

}

2.将sortset从redis当中取出来的API有很多:

/**

* 从redis中取出sortset

*

* @param key

* @return

*/

public Object getZSet(String key) {

Long size = redisTemplate.opsForZSet().size(key);

return redisTemplate.opsForZSet().rangeByScore(key, 0, size);

}

RedisTemplate操作5种基本类型数据,有一些共同的API 比如设置过期时间,和移除key的值,判断key是否存在

1设置过期时间

/**

*

* 指定缓存失效时间

*

* @param key

* 键

*

* @param time

* 时间(秒)

*

* @return

*

*/

public boolean expire(String key, long time) {

try {

if (time > 0) {

redisTemplate.expire(key, time, TimeUnit.SECONDS);

}

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

2.检测是否存在key :

/**

*

* 判断key是否存在

*

* @param key

* 键

*

* @return true 存在 false不存在

*

*/

public boolean checkKey(String key) {

try {

return redisTemplate.hasKey(key);

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

3:移除缓存

/**

* 移除key

* @param key

*/

public void removeKey(String key) {

redisTemplate.delete(key);

}

掌握redis,首先得掌握reids如何操作5种基本数据类型,5种基本数据类型中 set和sortset的区别需要特别注意,然后就是关于使用RedisTemplate  可能乱码的问题,以及StringRedisTemplate  的区别,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值