Redis相关知识

  1. yum安装redis 使用以下命令:直接将redis安装到Linux服务器(Xshell)中

    yum -y install redis
    
  2. 启动redis 使用以下命令,以后台运行方式启动redis

    redis-server /etc/redis.conf &
    
  3. 操作redis 使用以下命令启动redis客户端

    redis-cli
    

    具体可操作如下:

    redis-cli:打开客户端

    set testname zhangsan:存放一个key

    get testname:读取一个key

  4. 设置远程连接

    a.将redis配置文件下载到本地;redis配置文件是linux下的/etc/redis.conf

    b.将redis.conf中的"bin 127.0.0.1"注释掉

    c.将redis.conf中的"protected-mode yes"改为:"protected-mode no"

    d.将修饰后的redis.conf上传至linux下 的/etc目录

    e.使用命令"redis-cli shutdown"先关闭redis服务;在使用"redis-server /etc/redis.conf &"开启redis服务

    f.云服务防火墙或安全策略里面开放redis端口6379

redis有五大基础数据类型:

|--------|-------------|
| String | 字符串类型(使用较多) |
| Hash | 字典类型 |
| List | 列表类型 |
| Set | 集合类型 |
| Zset | 有序集合类型 |

1.String:字符串类型(使用较多)

简单动态字符串,它是从键值对key-value的形式存储的,根据key来存储和获取value值,它的使用相对来说比较简单,但是在实际项目中应用非常广泛:

使用如下:

set k1 v1:添加数据

get k1:查询数据

strlen k1:查询字符串的长度

可以使用ex参数来设置字符串的过期时间

set k1 v1 ex 1000 :设置1000s后过期(删除)

字符串的常见使用场景:

  1. 存放用户登录信息
  2. 存放文章详情和列表信息
  3. 存放和累计网页的统计信息
  4. ..............................

2.Hash:字典类型

字典类型又被称为散列类型或者是哈希表类型,它是将一个键值(key)和一个特殊的"哈希表"关联起来,这个"哈希表"包含两列数据:字段和值,他就相当于Java中的Map<String , Map<String , String>>结构。

假如我们使用字典类型来存储一篇文章的详情信息,存储结构如下:

同理,我们也可以使用字典类型来存储用户信息,并且字典类型来存储此类信息就无需手动序列化和反序列化数据了,所以使用起来更加的方便和高校。

字典类型的使用如下:

hset myhash key1 value1:添加数据

hset myhash key1:查询数据

字典类型的查询数据只能一个一个的查询,不能一次全部查询完!!

通常情况下,字典类类型会使用数组的方式来存储相关的数据,但发生哈希冲突时,才会使用链表的结构来存储数据。

添加多个数据:hmset myhset age "16" sex "男"

查询:hget myhset age

hget myhset sex

3.List:列表类型

列表类型是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此,它的元素操作(插入删除实时间复杂度为O(1)),所以相对来说速度还是比较块的,但它的查询时间复杂度为O(n),因此查询可能会比较慢。

列表类型使用如下:

lpush list 1 2 3:添加数据

lpop list :获取并删除列表的第一个元素

列表的典型使用场景可以有以下两个:

  1. 消息队列:列表类型可以使用rpush实现先进先出的功能,同时又可以使用lpop轻松的弹出(查询并删除)第一个元素,所以列表类型可以用来实现消息队列。
  2. 文查列表:对于博客站点来说,用户和文字都越来越多时,为了加快程序的响应速度,我们可以把用户的文字存入到list中,因为List是有序的结构,所以这样又可以完美的实现分页功能,从而加速了程序的相应速度。

4.Set:集合类型

Set:集合类型是一个无序并唯一的键值集合

集合类型使用场景如下:

sadd myset v1 v2 v3 :添加数据

smembers myset :查询集合中的所有数据

集合类型的经典使用场景如下:

  1. 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复
  2. 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖

集合类型(Set)和列表类型(List)的区别如下:

  1. 列表可以存储重复元素,集合只能存储非重复元素
  2. 列表是按照元素的先后顺序存储元素的,而集合是无序方式存储元素的

5.Zset:有序集合类型

有序集合类型相比于集合类型多了一个排序属性score(分值),对于有序集合Zset来说,每个存储元素相当于两个值组成的,一个是有序结合的元素值,一个属排序值,有序集合的存储元素值也是不能重复的,但分值是可以重复的。

当我们把学生的成绩存储在有序集合中,它的存储结构如下所示:

有序集合类型的使用如下:

zadd zset1 3 golong 4 sql 1 redis:添加数据

zrange zset 0 -1 :查询所有数据

有序集合的经典使用场景如下:

  1. 学生成绩排名
  2. 粉丝列表,根据关注的先后时间排序

Spring Boot集成Redis的详细教程:

首先,我们需要创建一个Spring Boot项目。可以使用IDEA或者Eclipse等工具创建,也可以直接在命令行中使用Spring Initializr来创建。这里我们以IDEA为例,步骤如下:

  1. 打开IntelliJ IDEA,点击"Create New Project"。
  2. 选择"Spring Initializr",点击"Next"。
  3. 填写项目的基本信息,如Group、Artifact、Name等,点击"Next"。
  4. 选择需要的依赖,这里我们需要添加"Web"和"Redis"的依赖,点击"Next"。
  5. 确认项目的设置,点击"Finish",等待项目创建完成。

三、添加Redis依赖

在项目的pom.xml文件中,添加Spring Boot对Redis的支持。代码如下:

<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>
</dependencies>

四、配置Redis

在application.properties文件中,配置Redis的相关信息。代码如下:

spring.redis.host=localhost
spring.redis.port=6379

五、创建Redis配置类

在项目中创建一个配置类,用于配置RedisTemplate。代码如下:

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        return template;
    }
}

六、使用RedisTemplate操作Redis

在需要操作Redis的地方,注入RedisTemplate,然后使用其提供的方法进行操作。代码如下:

@Service
public class UserService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    // ...其他方法...
}

七、测试Redis操作

为了测试Redis的操作,我们可以在UserService中添加一个方法,用于向Redis中添加和获取用户信息。代码如下:

@Service
public class UserService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    // ...其他方法...
    public void addUser(String key, User user) {
        redisTemplate.opsForValue().set(key, user);
    }
    public User getUser(String key) {
        return (User) redisTemplate.opsForValue().get(key);
    }
}

八、启动Spring Boot应用并测试Redis操作

启动Spring Boot应用后,我们可以使用Postman或者浏览器等工具,调用UserService的addUser和getUser方法,测试Redis的操作。如果一切正常,我们应该可以看到用户信息被正确地添加到Redis中,并且可以通过key获取到用户信息。

至此,我们已经成功地在Spring Boot项目中集成了Redis,并且可以正常使用RedisTemplate进行操作。在实际开发中,我们还可以使用Spring Data Redis提供的Repository接口,更方便地进行CRUD操作。同时,我们还可以使用Redis的发布/订阅功能,实现消息的广播和接收。

相关推荐
vvvae123416 分钟前
分布式数据库
数据库
雪域迷影37 分钟前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹1 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人2 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky2 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa2 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮3 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长3 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师4 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 3174 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop