平常测试redis操作命令,可能用的是cmd窗口 操作redis,记录一下 java程序操作reids,

操作redis的方法 可以用Jedis ,在springboot 提供了两种 方法操作 RedisTemplate 和StringRedisTemplate 两种方法的区别 可参考:https://blog.csdn.net/yifanSJ/article/details/79513179

当然 springboot 中也可以使用Jedis ,本次记录的是 如何使用RedisTemplate 操作reids的5种基本数据类型

  1. 在项目的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>
  2. 新建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;
  3. 使用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; } }
  4. 使用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);
    }
  5. 使用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);
    }
  6. 使用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);
    }
  7. 使用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);
    }
  8. 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);
    }
  9. 掌握redis,首先得掌握reids如何操作5种基本数据类型,5种基本数据类型中 set和sortset的区别需要特别注意,然后就是关于使用RedisTemplate  可能乱码的问题,以及StringRedisTemplate  的区别,

redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)的更多相关文章

  1. Java Spring mvc 操作 Redis 及 Redis 集群

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...

  2. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  3. Linux中crontab无法执行java程序的问题

    Linux中crontab无法执行java程序的问题 jdk环境变量配置问题:可以用全路径来解决: 竟然是kill -9之后,后面的脚本都不运行,这个还没有找到原因啊: 即便是系统级别的 ls 命令, ...

  4. 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法

    Sublime Text 2 是我最喜欢用来编码的文本编辑器,如果你尝试使用后相信你也会喜欢上它的.在这篇文章中我们将讨论如何在 Sublime Text 2 中编译和运行 Java 程序. 第一步: ...

  5. SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作

    SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ...

  6. Java使用Jedis操作Redis大全

    Java操作Redis需要导入两个jar: commons-pool2-2.4.2.jar jedis-2.1.0.jar package com.chinasofti.test; import ja ...

  7. 在 springboot 中如何整合 shiro 应用 ?

     Shiro是Apache下的一个开源项目,我们称之为Apache Shiro. 它是一个很易用与Java项目的的安全框架,提供了认证.授权.加密.会话管理,与spring Security 一样都是 ...

  8. Java通过jedis操作redis(增删改查)

    package sgh.main.powersite; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...

  9. Java通过jedis操作redis缓存

    package com.wodexiangce.util; import java.util.Set; import redis.clients.jedis.Jedis; /** * redis工具类 ...

随机推荐

  1. 51Nod 1135:元根(数论)

    1135 原根  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m) ...

  2. 重写ajax方法实现请求session过期时跳转登录页面

    jQuery(function($){ var _ajax=$.ajax; // 备份jquery的ajax方法 $.ajax=function(opt){ var _success = opt &a ...

  3. django ---Auth模块

    Auth模块 本文目录 1 Auth模块是什么 2 auth模块常用方法 3 扩展默认的auth_user表 回到目录 1 Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开 ...

  4. Windows共享设置

    Windows文件共享默认是开启的,任何用户都可以方便的设置共享目录.那么如何关闭并禁止呢. ====打开或关闭网上邻居的网络发现:1. 右键单击,网上邻居,弹出菜单选择:属性,打开网络和共享中心界面 ...

  5. Python基础练习及答案

    1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex', 'eric', 'rain'] 该题目主要是考的字符串的拼接,join方法, s = "" li ...

  6. oracle查询A表中主键都被哪些表引用了?

    select r.TABLE_NAME from USER_CONSTRAINTS p, USER_CONSTRAINTS r where p.TABLE_NAME = 'IAM_AUDIT_FIND ...

  7. oracle修改字符集方法

    查看源数据库字符集 在sql命令行执行,即可查看 cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 例如我的返回结果为0362,对照以 ...

  8. 修改.net core 运行端口

    ASPNETCORE_URLS environment variable is ignored by "dotnet run" dotnet new web set ASPNETC ...

  9. MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号;一般,表名与字段名都使用反引号。

    MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号:一般,表名与字段名都使用反引号.

  10. “更新时间”字段的:ON UPDATE CURRENT_TIMESTAMP 含义

    "更新时间"字段的:ON UPDATE CURRENT_TIMESTAMP 含义: 表示在数据库数据有更新的时候UPDATE_TIME的时间会自动更新(如果数据库数据值没有变化的话 ...