SpringBoot(七) --- Redis基础

目录

前言

一、Redis入门

二、Redis常用数据类型

三、Redis常用命令

[1. 字符串操作命令](#1. 字符串操作命令)

[2. 哈希操作命令](#2. 哈希操作命令)

[3. 列表操作命令](#3. 列表操作命令)

[4. 集合操作命令](#4. 集合操作命令)

[5. 有序集合操作命令](#5. 有序集合操作命令)

6.通用命令

四、在Java中操作Redis


前言

Redis是一个基于内存的key-value结构数据库,有以下的优点:

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

Redis安装包分为Windows版和Linux版:


一、Redis入门

Redis的Windows版属于绿色软件,直接解压就可以使用,解压后目录结构如下图,红字是三个重要的文件:

如何启动Redis服务呢?

输入redis-server.exe redis.windows.conf,即可打开Redis服务,默认是6379端口。

然后通过客户端连接Redis服务器,还是在当前文件夹通过cmd打开一个新的命令行窗口,输入redis-cli.exe。

还可以通过以下命令还指定不同ip的Redis服务器。-h后跟的是ip地址, -p后面跟的是端口号。-a后面跟的是redis数据库的密码。我们可以在配置文件中修改Redis数据库的密码

二、Redis常用数据类型

哈希这种数据结构常常用来存储对象数据。

三、Redis常用命令

我们需要借助一块Redis的图形化工具Another Redis Desktop Manager。

1. 字符串操作命令

在我们的图形化界面中可以看到相应的命令提示

命令执行完之后,我们可以发现设置好了一条字符串数据。

2. 哈希操作命令

3. 列表操作命令

直接利用第一个命令就可以创建列表。

4. 集合操作命令

5. 有序集合操作命令

ZINCRBY key increment member 这个命令可以对指定成员加上分数increment。

若要查询有序集合中的所有成员: ZRANGE key 0 -1。

6.通用命令

KEYS * 返回所有的key

KEYS set* 返回所有以set开头的的key

四、在Java中操作Redis

使用Spring Data Redis来进行Redis操作。

导入Maven坐标:

XML 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

配置Redis数据源:

java 复制代码
spring:  
    redis:
        host: localhost
        port: 6379
        password: 123456
        database: 0

编写配置类:

java 复制代码
@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        log.info("开始创建redis模版对象..");

        RedisTemplate redisTemplate = new RedisTemplate<>();
        // 设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }

}

通过RedisTemplate对象操作Redis(通过单元测试来演示):

java 复制代码
@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedisTemplate() {
        System.out.println(redisTemplate);

        // 获取Redis中的字符串类型
        ValueOperations valueOperations = redisTemplate.opsForValue();
        // 获取Redis中的哈希类型
        HashOperations hashOperations = redisTemplate.opsForHash();
        // 获取Redis中的列表类型
        ListOperations listOperations = redisTemplate.opsForList();
        // 获取Redis中的集合类型
        SetOperations setOperations = redisTemplate.opsForSet();
        // 获取Redis中的有序集合类型
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }


    /**
     * 操作字符串类型的数据
     */
    @Test
    public void testString() {
        // 设置字符串类型的数据
        redisTemplate.opsForValue().set("city", "北京");

        // 获取city的值
        String city  = (String) redisTemplate.opsForValue().get("city");
        System.out.println(city);
        // 可以设置数据的有效期
        redisTemplate.opsForValue().set("code", "1234", 60, TimeUnit.SECONDS);
    }

}
java 复制代码
    /**
     * 操作哈希类型的数据
     */
    @Test
    public void testHash() {
        HashOperations hashOperations = redisTemplate.opsForHash();

        // 向数据库中传入哈希类型的数据
        hashOperations.put("101", "name", "menghao");
        hashOperations.put("101", "age", "16");
        // 获取数据
        String name = (String) hashOperations.get("101", "name");
        System.out.println(name);

        System.out.println("---------------------------------------------------");
        // 获取所有的key
        Set keys = hashOperations.keys("101");
        System.out.println(keys);
        System.out.println("---------------------------------------------------");

        // 获取所有的values
        List values = hashOperations.values("101");
        System.out.println(values);

        // 删除数据(删除101中的age字段)
        hashOperations.delete("101", "age");
    }
}

操作其他类型的数据与操作字符串和哈希表都差不多。只需清楚每个方法是做什么的即可。

相关推荐
这个DBA有点耶11 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G11 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备11 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远11 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
IT大白鼠12 小时前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz12 小时前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
2601_9622186113 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
全栈弄潮儿²⁰²⁴13 小时前
AI Agent 开发实战(30):限流、缓存与成本控制
人工智能·gpt·缓存·agent·限流·agi·成本控制
张洛闻Eren13 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安13 小时前
MySQL-触发器
数据库·mysql