第125天学习打卡(Redis Jedis 常用的API 事务 springboot整合)

Posted doudoutj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第125天学习打卡(Redis Jedis 常用的API 事务 springboot整合)相关的知识,希望对你有一定的参考价值。

Jedis

我们要使用Java来操作Redis

什么是Jedis 是Redis官方推荐的Java连接的开发工具,使用Java操作Redis中间件!如果使用Java操作redis,一定要对Jedis十分熟悉。

测试

在java中建立空项目要注意把这几个地方进行配置:

image-20210513144405445

image-20210513144519686

image-20210513144858849

1.导入对应 的依赖

pom.xml

    <dependencies>
<!--        导入jedis的包-->
       
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.6.0</version>
        </dependency>

        <!-- 导入fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>

2.编码测试:

  • 连接数据库
  • 操作命令
  • 断开连接

测试连接:

首先开启redis:

image-20210513152253674

然后在IDEA中测试连接:

package com.kuang;

import redis.clients.jedis.Jedis;

public class TestPing {
    public static void main(String[] args) {
        //1. new Jedis
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //jedis 所有的命令就是我们之前学习的所有指令!
        System.out.println(jedis.ping());


    }
}

输出为:PONG则表示连接成功!

常用的API

Key

package com.kuang;

import redis.clients.jedis.Jedis;

import java.util.Set;

public class TestKey {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1",6379);
        System.out.println("清空数据:" + jedis.flushDB());
        System.out.println("判断某个键是否存在:" + jedis.exists("username"));
        System.out.println("新增<'username', 'kuangshen'>的键值对:" + jedis.set("username","kuangshen"));
        System.out.println("新增<'password','password'>的键值对:" + jedis.set("password","password"));
        System.out.println("系统中的所有的键如下:");
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        System.out.println("删除键password:" + jedis.del("password"));
        System.out.println("判断建password是否存在:" + jedis.exists("password"));
        System.out.println("查看键username所存储的值的类型:" + jedis.type("username"));
        System.out.println("随机返回key空间的一个:" + jedis.randomKey());
        System.out.println("重命名key:" + jedis.rename("username", "name"));
        System.out.println("取出改后的name:" + jedis.get("name"));
        System.out.println("按索引查询:" + jedis.select(0));
        System.out.println("删除当前选择数据库中的所有key:" + jedis.flushDB());
        System.out.println("返回当前数据库中的key的数目:" + jedis.dbSize());
        System.out.println("删除所有数据库中的所有key:" + jedis.flushAll());


    }
}

输出的结果:

清空数据:OK
判断某个键是否存在:false
新增<'username', 'kuangshen'>的键值对:OK
新增<'password','password'>的键值对:OK
系统中的所有的键如下:
[password, username]
删除键password:1
判断建password是否存在:false
查看键username所存储的值的类型:string
随机返回key空间的一个:username
重命名key:OK
取出改后的name:kuangshen
按索引查询:OK
删除当前选择数据库中的所有key:OK
返回当前数据库中的key的数目:0
删除所有数据库中的所有key:OK

Process finished with exit code 0

String

package com.kuang;

import redis.clients.jedis.Jedis;

import java.util.concurrent.TimeUnit;

public class TestString {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.flushDB();
        System.out.println("=================增加数据=====================");
        System.out.println(jedis.set("key1", "value1"));
        System.out.println(jedis.set("key2", "value2"));
        System.out.println(jedis.set("key3", "value3"));
        System.out.println("删除键key2:" + jedis.del("key2"));
        System.out.println("获取键key2:" + jedis.get("key2"));
        System.out.println("修改key1:" + jedis.set("key1", "value1Changed"));
        System.out.println("获取key1的值:" + jedis.get("key1"));
        System.out.println("在key3后面加入值:" + jedis.append("key3", "End"));
        System.out.println("key3的值:" + jedis.get("key3"));
        System.out.println("增加多个键值对:" + jedis.mset("key01", "value01", "key02", "value02", "key03", "value03"));
        System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));
        System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03", "key04"));
        System.out.println("删除多个键值对:" + jedis.del("key01", "key02"));
        System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));
        jedis.flushDB();
        System.out.println("===============新增键值对防止覆盖原先值======================");
        System.out.println(jedis.setnx("key1", "value1"));
        System.out.println(jedis.setnx("key2", "value2"));
        System.out.println(jedis.setnx("key2", "value2-new"));
        System.out.println(jedis.get("key1"));
        System.out.println(jedis.get("key2"));

        System.out.println("==================新增键值对并设置有效时间===================");
        System.out.println(jedis.setex("key3", 2, "value3"));
        System.out.println(jedis.get("key3"));
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(jedis.get("key3"));

        System.out.println("=================获取原值,更新为新值==============");
        System.out.println(jedis.getSet("key2", "ke2GetSet"));
        System.out.println(jedis.get("key2"));
        System.out.println("获得key2的值的字符串:" + jedis.getrange("key2", 2, 4));



    }
}

输出结果:

=================增加数据=====================
OK
OK
OK
删除键key2:1
获取键key2:null
修改key1:OK
获取key1的值:value1Changed
在key3后面加入值:9
key3的值:value3End
增加多个键值对:OK
获取多个键值对:[value01, value02, value03]
获取多个键值对:[value01, value02, value03, null]
删除多个键值对:2
获取多个键值对:[null, null, value03]
===============新增键值对防止覆盖原先值======================
1
1
0
value1
value2
==================新增键值对并设置有效时间===================
OK
value3
null
=================获取原值,更新为新值==============
value2
ke2GetSet
获得key2的值的字符串:2Ge

Process finished with exit code 0

List

package com.kuang;

import redis.clients.jedis.Jedis;

public class TestList {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.flushDB();
        System.out.println("====================添加一个list================");
        jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap", "WeakHashMap", "LinkedHashMap", "EnumMap");
        jedis.lpush("collections", "HashSet");
        jedis.lpush("collections", "TreeSet");
        jedis.lpush("collections", "TreeMap");
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections区间0-3的元素:" + jedis.lrange("collections", 0, 3));
        System.out.println("==========================");
        //删除列表指定的值,第二个参数为删除个数(有重复时),后add进去的值先被删除,类似于出栈
        System.out.println("删除指定元素的个数:" + jedis.lrem("collections", 2, "HashMap"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("删除下标0-3区间之外的元素:" + jedis.ltrim("collections", 0, 3));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections列表出栈(左端):" + jedis.lpop("collections"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections添加内容, 从列表右端,与lpush相对应:" + jedis.rpush("collections", "kuangshenshuo"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections列表出栈(右端):" + jedis.rpop("collections"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("修改collections指定下标1的内容:" + jedis.lset("collections", 1,"LinkedHashMap"));
        System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("=======================================");
        System.out.println("collections的长度:" + jedis.llen("collections"));
        System.out.println("获取collections下标为2的元素:" + jedis.lindex("collections", 2));
        System.out.println("===========================");
        jedis.lpush("sortedList", "3", "6", "2", "5", "7", "0", "4");
        System.out.println("sortedList排序前:" + jedis.lrange("sortedList", 0, -1));
        System.out.println(jedis.sort("sortedList"));
        System.out.println("sortedList排序后:" + jedis.lrange("sortedList", 0, -1));

    第277天学习打卡(知识点回顾, springboot redis自动配置)

第220天学习打卡(Redis复习 list set zset)

第126天学习打卡(Redis redis.conf详解 Redis持久化 RDB AOF)

第221天学习打卡(MySQL的日志文件 Redis备份是如何执行的)

第122天学习打卡(Redis Nosql概述 Redis 入门)

第219天学习打卡(Redis知识点回顾 Set Hash)