Redis实战--SpringBoot中对Redis数据类型String的基本操作示例

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Redis实战--SpringBoot中对Redis数据类型String的基本操作示例
该文章是接上一篇文章《Redis整合SpringBoot示例》的后续,操作用例代码比较多,这里展示核心代码所占篇幅很多,所以单独抽出来写

String类型在SpringBoot中的使用代码如下

方法对应的redis基本操作都比较简单,这里不做详细解释,每一个方法都有对应的注释。
package com.example.echo.redis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.IntStream;

/**
 * @author XLecho
 * Date 2019/11/9 0009
 * Time 10:28
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTypeStringUseTest {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 存入String类型
     */
    @Test
    public void testSetString() {
        redisTemplate.opsForValue().set("testString", "testString");
        System.out.println(redisTemplate.opsForValue().get("testString"));
    }

    /**
     * 获取存入的String类型
     */
    @Test
    public void testGetString() {
        String string = redisTemplate.opsForValue().get("testString");
        System.out.println(string);
    }

    /**
     * 删除存入的String类型
     */
    @Test
    public void testDelString() {
        redisTemplate.delete("testString");
        System.out.println(redisTemplate.opsForValue().get("testString"));
    }

    /**
     * 对存入的值进行incr递增
     */
    @Test
    public void testIncrString() {
        redisTemplate.opsForValue().set("value", "10");
        redisTemplate.opsForValue().increment("value", 1.1);
        System.out.println(redisTemplate.opsForValue().get("value"));
    }

    /**
     * 对存入的值进行decr递减
     */
    @Test
    public void testDecrString() {
        redisTemplate.opsForValue().set("value", "10");
        redisTemplate.opsForValue().increment("value", -1);
        System.out.println(redisTemplate.opsForValue().get("value"));
    }

    /**
     * 对存入的值进行append拼接
     */
    @Test
    public void testAppendString() {
        redisTemplate.opsForValue().set("value", "string");
        redisTemplate.opsForValue().append("value", "s");
        System.out.println(redisTemplate.opsForValue().get("value"));
    }

    /**
     * 获取指定key对应的索引位置的字符
     */
    @Test
    public void testGetRangeString() {
        redisTemplate.opsForValue().set("value", "abcdefgh");
        String value = redisTemplate.opsForValue().get("value", 1, 5);
        System.out.println(value);
    }

    /**
     * 在指定key对应的索引位置后面添加字符666
     * 注意:该方法会从指定索引后面添加666,但是如果指定索引后面刚好有还有3个字符,那么那3个字符会被替换
     */
    @Test
    public void testSetRangeString() {
        redisTemplate.opsForValue().set("value", "666", 2);
        System.out.println(redisTemplate.opsForValue().get("value"));
    }

    /**
     * 获取指定key的长度
     */
    @Test
    public void testStrlenString() {
        System.out.println(redisTemplate.opsForValue().size("value"));
    }

    /**
     * 同时set多个key
     */
    @Test
    public void testMsetString() {
        Map<String, String> map = new HashMap<>();
        map.put("a", "1");
        map.put("b", "2");
        redisTemplate.opsForValue().multiSet(map);
        System.out.println(redisTemplate.opsForValue().get("a"));
        System.out.println(redisTemplate.opsForValue().get("b"));
    }

    /**
     * 同时get多个值
     */
    @Test
    public void testMgetString() {
        List<String> list = Arrays.asList("a", "b");
        System.out.println(redisTemplate.opsForValue().multiGet(list));
    }

    /**
     * setnx的使用
     */
    @Test
    public void testSetnxString() {
        // 使用循环插入多次,校验存在的时候是否能够插入
        IntStream.range(0, 10).forEach(it -> {
            Boolean email = redisTemplate.opsForValue().setIfAbsent("email", "xl_echo@163.com");
            System.out.println(email);
        });
    }
}

项目源码地址:https://coding.net/u/xlsorry/p/SpringBootRedis/git

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
10天前
|
Java 数据安全/隐私保护 网络架构
一个简单的示例在spring boot中实现国际化
一个简单的示例在spring boot中实现国际化
|
16天前
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
34 0
|
5天前
|
JavaScript 前端开发 索引
JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型
【6月更文挑战第25天】JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型,而Object包括Array、Function等是引用类型。Objects可以包含键值对,Array是特殊的Object。Functions也是对象。`null`和`undefined`被视为特殊的原始值。
11 1
|
22天前
|
消息中间件 缓存 NoSQL
day40--Redis(二)实战篇
day40--Redis(二)实战篇
16 2
|
2天前
|
NoSQL 容灾 Redis
Redis系列学习文章分享---第十一篇(Redis高级实战篇---RDB演示 +RDB的fork原理+A0F演示 +RDB和AOF)
Redis系列学习文章分享---第十一篇(Redis高级实战篇---RDB演示 +RDB的fork原理+A0F演示 +RDB和AOF)
8 0
|
2天前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
9 0
|
2天前
|
NoSQL Redis
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
5 0
|
1月前
|
Java API
【JAVA学习之路 | 提高篇】包装类(包装类与基本数据类型及String类之间的转换)
【JAVA学习之路 | 提高篇】包装类(包装类与基本数据类型及String类之间的转换)
|
JSON 前端开发 Java
SpringBoot 实战:一招实现结果的优雅响应
今天说一下 Spring Boot 如何实现优雅的数据响应:统一的结果响应格式、简单的数据封装。
345 0
SpringBoot 实战:一招实现结果的优雅响应
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的大学生心理健康诊断专家系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的大学生心理健康诊断专家系统的详细设计和实现(源码+lw+部署文档+讲解等)
7 0