随笔 - 134,  文章 - 0,  评论 - 0,  阅读 - 21275

Redis

非关系性数据库

  • 结构灵活
  • 访问速度快

基于内存存储,支持key-value形式,底层使用c语言编写的。

基于key-value形式的数据字典,结构非常简单,没有数据表的概念,直接用键值对的形式完成数据的管理,Redis支持5中数据类型。

  • 字符串
  • 列表 list
  • 集合set
  • 有序集合
  • 哈希 hashMap
{

	key:value,

	key:{key:value}

}

安装Redis

1.下载Redis

2.解压

  • 创建文件Redis
    • 创建文件
    • bin:放置启动Redis文件的可执行文件
    • db放置数据库
    • etc放置配置文件,设置Redis服务的端口、日志文件位置、数据文件位置

启动redis

1.启动Redis目录,启动redis-server

2.进入redis目录,启动redis-cil,启动redis的客户端管理窗口,在此窗口中即可操作redis数据库

3.对数据进行操作:

set key value
get key

4.关闭redis服务

shutdown

5.退出客户端

ctrl+c

Springboot整合redis

spring Data Redis 操作Redis

1.pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>springbootRedis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.2.4.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        整合redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
<!--        客户端-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

2.创建实体类:

要存储对象必须实现序列化接口

package com.southwind.entity;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class Student implements Serializable {
    private Integer id;
    private String name;
    private Double score;
    private Date birthday;
}

3.创建控制器:

private RedisTemplate redisTemplate;

package com.southwind.handler;

import com.southwind.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

@RestController
public class studentHandler {
    @Autowired
    private RedisTemplate redisTemplate;
    @PostMapping("/set")
    public void set(@RequestBody Student student){
        redisTemplate.opsForValue().set("student",student);
    }
    @GetMapping("/get/{key}")
    public Student get(@PathVariable("key") String key){
        return (Student) redisTemplate.opsForValue().get(key);
    }
    @DeleteMapping("/delete/{key}")
    public boolean delete(@PathVariable("key")String key){
        redisTemplate.delete(key);
        return redisTemplate.hasKey(key);
    }
}

4.配置文件:

spring:
  redis:
    database: 0
    host: localhost
    port: 6379

5.启动类:

package com.southwind;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

Redis的五种数据类型

  • 字符串:
//    字符串
    @GetMapping("/string")
    public String addString(String s){
        redisTemplate.opsForValue().set("str","hellow");
        String str=(String) redisTemplate.opsForValue().get("str");
        return str;
    }
  • list列表:
//    列表
    @GetMapping("/list")
    public List<String> addList(){
        ListOperations<String,String> listOperations = redisTemplate.opsForList();
//        key值是一样的因为是集合push pop
        listOperations.leftPush("list","hello");
        listOperations.leftPush("list","hello");
        listOperations.leftPush("list","hello");
        listOperations.leftPush("list","hello");
//        取rangge("key",开始的下标,结束的下标)
        List<String> list=listOperations.range("list",1,2);
        return list;
    }
  • set集合
//    set集合
    @GetMapping("/set")
    public Set<String> addSet(){
        SetOperations setOperations =redisTemplate.opsForSet();
//        set集合不能重复
        setOperations.add("set","hello");
        setOperations.add("set","hello");
        setOperations.add("set","b");
        setOperations.add("set","b");
        Set<String> set =setOperations.members("set");
        return set;
    }
  • 有序集合
//有序集合 zset
    @GetMapping("/zset")
    public Set<String> addZset(){
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        zSetOperations.add("hello","a",1);
        zSetOperations.add("hello","a",2);
        zSetOperations.add("hello","a",3);
        Set<String> set =zSetOperations.range("set",0,3);
        return set;
    }
  • 哈希

HashMap需要一个key和value

HashOperations key hashkey value

key是每一组数据的ID,hashkey和value是一组完整的HashMap数据,通过key来区分不同的HashMap

HashMap hashMap1 =new HashMap();
hashMap1.put(key1,value1);
HashMap hashMap2 =new HashMap();
hashMap1.put(key2,value3);
HashMap hashMap3 =new HashMap();
hashMap1.put(key3,value3);
HashOperations<String,String> hashOperation =redisTemplate.opsForHash();
hashOperation.put(hashMap1,key1,value1);
hashOperation.put(hashMap2,key1,value1);
hashOperation.put(hashMap3,key1,value1);
//    哈希
    @GetMapping("/hash")
    public void hashMap(){
        HashOperations<String,String,String> hashOperations =redisTemplate.opsForHash();
        hashOperations.put("key","hashkey","hello");
        hashOperations.get("key","hashkey");
    }
posted on   Steam残酷  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示