《SpringBoot》中使用的Redis

Redis入门

Linux中安装Redis

redis的说明

Redis 是一个开源的,内存中的数据结构存储系统它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构

1. Redis常用命令

string类型:

命令 说明 案例
set 添加key-value set username admin
get 根据key获取数据 get username
exists 判断key是否存在 exists name(返回1存在 0不存在)
del 删除redis中的key del key
Keys 用于查询符合条件的key keys 查询redis中全部的key,keys n?me 使用占位符获取数据 keys nam 获取nam开头的数据

Hash类型

命令 说明 案例
hset 为对象添加数据 hset key field value
hget 获取对象的属性值 hget key field
hexists 判断对象的属性是否存在 HEXISTS key field1表示存在 0表示不存在
hdel 删除hash中的属性 hdel user field

List类型

说明

Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据
List集合可以当做队列使用,也可以当做栈使用

队列:存入数据的方向和获取数据的方向相反

栈:存入数据的方向和获取数据的方向相同

命令 说明 案例
lpush 从队列的左边入队一个或多个元素 LPUSH key value
rpush 从队列的右边入队一个或多个元素 RPUSH key value
lpop 从队列的左端出队一个元素 LPOP key
rpop 从队列的右端出队一个元素 RPOP key

Redis事务命令

说明

说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚.

命令 说明 案例
multi 标记一个事务开始 127.0.0.1:6379> MULTI
exec 执行所有multi之后发的命令 127.0.0.1:6379> EXEC
discard 丢弃所有multi之后发的命令

Redis入门

导入jar包

         
    
        redis.clients
        jedis
    
    
        org.springframework.data
        spring-data-redis
    

客户端操作String类型

前提

创建一个Java类测试类

配置redis服务

主要目的测试程序远程操作Redis是否有效
1.redis需要关闭IP绑定模式
2.redis关闭保护模式
3.redis最好开启后端运行

redis入门案例(1)

整体结构

 public void test01() throws InterruptedException {
    //1.测试链接
    Jedis jedis = new Jedis("192.168.126.129",6379);
    jedis.set("a", "动态获取redis中的数据");
    System.out.println(jedis.get("a"));

    //2.测试数据是否存在
    if(jedis.exists("a")){
        jedis.set("a", "修改数据");
    }else{
        jedis.set("a", "新增数据");
    }

    //3.删除redis
    jedis.del("a");

    //4.清空所有的数据
    jedis.flushDB();
    jedis.flushAll();

    //5.为数据添加超时时间
    jedis.set("b", "设定超时时间");
    jedis.expire("b", 10);
    Thread.sleep(2000);
    System.out.println(jedis.ttl("b"));
}

1 . 测试链接

Jedis jedis = new Jedis("192.168.126.129",6379);
jedis.set("a", "动态获取redis中的数据");
System.out.println(jedis.get("a"));
1 - Jedis是在springboot中使用redis的时候引入到包,他springboot中代表redis new一个Jedis的时候参数的方式来引入redis所在的ip地址和端口。
2 - set是 添加key和value
3 - get是 获取根据key获取value

2 . 测试数据是否存在

  if(jedis.exists("a")){
        jedis.set("a", "修改数据");
    }else{
        jedis.set("a", "新增数据");
    }
exists 是判断数据是否存在

判断 a 是否存在 如果存在的话a的value值改成<修改数据>,如果不存在的话a的value是<新增数据>

3 . 删除redis

jedis.del("a");
del 表示删除

删除key 是 a 的数据

4 . 清空所有的数据

jedis.flushDB();
jedis.flushAll();
flushDB 清空单个数据库
flushAll 清空全部数据库

此方法很危险删除你的数据所以不建议使用

5 . 为数据添加超时时间

jedis.set("b", "设定超时时间");
jedis.expire("b", 10);
Thread.sleep(2000);
System.out.println(jedis.ttl("b"));

redis入门案例(2)

原子性

什么是原子性?

一个事务是一个不可分割的最小工作单位,要么都成功要么都失败。

原子操作是指你的一个业务逻辑必须是不可拆分的.比如你给别人转钱,你的账号扣钱,别人的账号
增加钱,这个业务逻辑就是原子性的,这个操作就是原子操作,要么都成功要么都失败。

Redis所有单个命令的执行都是原子性的。

整体结构

 public void test02(){
    Jedis jedis = new Jedis("192.168.126.129", 6379);
    jedis.set("c", "测试redis");
    //需求1: 如果数据不存在时,才会为数据赋值.
    jedis.setnx("d","测试setnx方法");
    System.out.println(jedis.get("d"));

    //需求2: 需要为数据添加超时时间,同时满足原子性的要求
    //为数据添加超时时间
    jedis.setex("s", 20, "为数据添加超时111");
    System.out.println("获取超时时间:"+jedis.ttl("s"));
}

需求1

如果数据不存在时,才会为数据赋值.

     jedis.setnx("d","测试setnx方法");
     System.out.println(jedis.get("d"));
setnx - 在指定的 key 不存在时,为 key 设置指定的值

如果d不存在的话才指定值

需求2

需要为数据添加超时时间,同时满足原子性的要求


jedis.setex("s", 20, "为数据添加超时111");
System.out.println("获取超时时间:"+jedis.ttl("s"));

setex - 指定的key设置值及其过期时间。如果key已经存在, setex 命令将会替换旧的值

需求3

如果数据存在才修改,并且为数据添加超时时间,满足原子性要求

SetParams:
    XX: 数据存在时赋值.
    NX: 数据不存在时赋值
    EX: 添加超时时间单位秒
    PX: 添加超时时间单位毫秒

使用Redis中的setparams

 public void test03(){
    Jedis jedis = new Jedis("192.168.126.129", 6379);
    jedis.flushAll();
    
    SetParams setParams = new SetParams();
    setParams.xx().ex(20);
    jedis.set("a", "测试方法",setParams);
    System.out.println(jedis.get("a"));
}
flushAll - 清空全部数据库(Redis)
xx().ex(20) - 分别为 xx() 数据存在时,ex(20) 超时20毫秒

你可能感兴趣的:(《SpringBoot》中使用的Redis)