redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)
平常测试redis操作命令,可能用的是cmd窗口 操作redis,记录一下 java程序操作reids,
操作redis的方法 可以用Jedis ,在springboot 提供了两种 方法操作 RedisTemplate 和StringRedisTemplate 两种方法的区别 可参考:https://blog.csdn.net/yifanSJ/article/details/79513179
当然 springboot 中也可以使用Jedis ,本次记录的是 如何使用RedisTemplate 操作reids的5种基本数据类型
- 在项目的pom文件中导入 操作redis所需要的依赖:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springboot-redis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-redis</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.directory.studio/org.apache.commons.lang -->
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<!-- <version>2.9.0</version> -->
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project> - 新建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<String, Object> 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<Integer> 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<String, String> hashMap = new HashMap<>();
//使用RedisTemplate 有些情况会乱码
hashMap.put("redis", "redis");
hashMap.put("mysql", "mysql");
for (Entry<String, String> 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<Object> 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<Object> 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 的区别,
redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)的更多相关文章
- Java Spring mvc 操作 Redis 及 Redis 集群
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...
- Redis入门和Java利用jedis操作redis
Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...
- Linux中crontab无法执行java程序的问题
Linux中crontab无法执行java程序的问题 jdk环境变量配置问题:可以用全路径来解决: 竟然是kill -9之后,后面的脚本都不运行,这个还没有找到原因啊: 即便是系统级别的 ls 命令, ...
- 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法
Sublime Text 2 是我最喜欢用来编码的文本编辑器,如果你尝试使用后相信你也会喜欢上它的.在这篇文章中我们将讨论如何在 Sublime Text 2 中编译和运行 Java 程序. 第一步: ...
- SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作
SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ...
- Java使用Jedis操作Redis大全
Java操作Redis需要导入两个jar: commons-pool2-2.4.2.jar jedis-2.1.0.jar package com.chinasofti.test; import ja ...
- 在 springboot 中如何整合 shiro 应用 ?
Shiro是Apache下的一个开源项目,我们称之为Apache Shiro. 它是一个很易用与Java项目的的安全框架,提供了认证.授权.加密.会话管理,与spring Security 一样都是 ...
- Java通过jedis操作redis(增删改查)
package sgh.main.powersite; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...
- Java通过jedis操作redis缓存
package com.wodexiangce.util; import java.util.Set; import redis.clients.jedis.Jedis; /** * redis工具类 ...
随机推荐
- Tomcat介绍、安装jdk、安装Tomcat、配置Tomcat监听80端口
1.Tomcat介绍 2.安装jdk下载:wget -c http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8 ...
- python:代码复用与函数递归
#recursion.py:打印斐波那契数列 def fact(n): if n==1 or n==2: return 1 else: return fact(n-1)+fact(n-2) while ...
- Liunx----vi编辑器
关于vi编辑器基本的用法总结如下: vi是linux下的一款文编编辑器. 进入vi的方法:在系统启动起来后,直接键入vi或vi 文件名: 进去后输入内容方法:输入a或i,切换到编辑模式: 退出编辑模式 ...
- Python中元组、列表、字典的遍历和相互转化
一.元组,列表,字典的遍历 1.1 元组的遍历 元组的遍历借助 range() 函数,基本思想是通过元组的长度使用for循环进行遍历,代码如下: fruits=("apple&quo ...
- 【BZOJ2300】【SCOI2011】糖果
差点就忘了还有差分约束这个东西……看见了就要学习一个 原题: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...
- centos7配置lamp成功安装过
linux+apache+mysql/mariadb+php 首先apache的安装: yum install httpd 接着mysql/mariadb的安装: yum install mysql ...
- openresty 一些可选的模板引擎
以下为一些 openresty 可选的模板引擎,方便使用 lemplate (https://github.com/openresty/lemplate) lua-resty-tags (https: ...
- css3中的BFC,IFC,GFC和FFC
出处:https://www.jianshu.com/p/e75f351e11f8 表格比较: 名称 英文全称 含义 BFC Block Formatting Contexts 块级格式化上下文 IF ...
- Linux paste命令详解
Linux paste命令 Linux paste命令用于合并文件的列.paste指令会把每个文件以列对列的方式,一列列地加以合并 将每个指定文件里的每一行整合到对应一行里写到标准输出,之间用制表符分 ...
- CentOS6.5 安装+ Tengine + PHP + MySQL
简介: Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了 ...