初始Redis(一)

本文介绍了Redis的安装过程,重点阐述了Redis的数据类型(如字符串、哈希、列表、集合和有序集合)以及如何在SpringDataRedis中进行操作。文章旨在帮助开发者理解Redis在性能优化中的作用和基本应用。
摘要由CSDN通过智能技术生成

前言:在开发中,普遍会使用mysql数据库进行数据的存储,但在这种情况下,用户每次的访问都要去数据库里面查找数据,当访问量过大时,就会影响到性能,为了防止出现这样的情况,我们需要使用Redis做缓存,提高性能。

一.Redis的安装

Redis下载icon-default.png?t=N7T8https://redis.io

下载之后安装属于傻瓜式安装,安装完成之后,打开,目录如下

文件名作用
redis.windows.confRedis的配置文件
redis-cli.exeRedis客户端
redis-server.exeRedis服务端

 

启动服务端,打开cmd命令

 关闭服务,ctrl+c即可。

启动客户端 

退出客户端输入exit命令即可 。

二.Redis的数据类型

Redis存储的数据是key-value结构的数据,其中key是字符串类型,value有五种常用的数据类型

字符串 string普通字符串,redis中最简单的数据类型

哈希 hash

也叫散列,类似于java中的HashMap结构   (适用于存储对象)

列表 list按照插入的顺序排序,可以有重复的元素,类似于java中的LinkedlList (适用于存储有顺序的数据)
集合 set无序集合,没有重复元素,类似于java中的HashSet
有序集合 sorted set/zset集合中每一个元素关联一个分数,根据分数升序排序,没有重复元素 (适用于存储一些排行榜的数据)

三.Redis的数据操作

基于上面,我们清楚的知道Redis的数据类型有五种,每种数据类型的操作又有不同,我们将分开进行讨论

1.string类型

2.哈希 hash

 

3. 列表 list

4.集合 set 

 

5.有序集合 sorted set/zset 

 

 通用命令

 

四.Spring Data Redis操作Redis

导入maven坐标

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

 配置Redis数据源

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

默认没有设置密码,如果设置了密码,需要配置上去,这里小编使用的是0号数据库(database可以选择不配)。

编写一个配置类,创建RedisTemplate对象

package com.sky.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置Redis连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
    
}

 使用RedisTemplate操作redis

package com.sky;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void test1(){
        System.out.println(redisTemplate);
        ValueOperations valueOperations = redisTemplate.opsForValue();
        HashOperations hashOperations = redisTemplate.opsForHash();
        ListOperations listOperations = redisTemplate.opsForList();
        SetOperations setOperations = redisTemplate.opsForSet();
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        //字符串
        valueOperations.set("city","北京");
        String city = (String) valueOperations.get("city");
        valueOperations.set("code","1234",3, TimeUnit.MINUTES);
        valueOperations.setIfAbsent("lock",1);

        //哈希类型的数据
        hashOperations.put("100","name","Tom");
        hashOperations.put("100","age","20");
        String  o = (String) hashOperations.get(100,"name");
        Set keys = hashOperations.keys("100");
        List values = hashOperations.values("100");
        hashOperations.delete("100","age");

        //列表类型数据
        listOperations.leftPushAll("mylist","a","b");
        listOperations.leftPush("mylist","d");

        List mylist = listOperations.range("mylist", 0, -1);

        listOperations.rightPop("mylist");

        Long mylist1 = listOperations.size("mylist");

        //集合类型的数据
        setOperations.add("set1","a","b","c");
        setOperations.add("set2","b","c","d");

        Set members = setOperations.members("set1");

        Long size = setOperations.size("set1");

        Set intersect = setOperations.intersect("set1", "set2");

        Set union = setOperations.union("set1", "set2");

        setOperations.remove("set1","a");

        //有序集合类型数据

      zSetOperations.add("zset1","a",20);
      zSetOperations.add("zset1","b",20.2);
      zSetOperations.add("zset1","c",20.1);

      Set zset1 = zSetOperations.range("zset1", 0, -1);

      zSetOperations.incrementScore("zset1","c",10);

      zSetOperations.remove("zset1","a","b");

       //通用命令操作

        Set keys1 = redisTemplate.keys("*");

        Boolean name = redisTemplate.hasKey("name");

        for (Object o1 : keys1) {
            DataType type = redisTemplate.type(o1);
        }

        redisTemplate.delete("mylist");



    }

}

这里,小编也是从五种数据类型进行操作的,需要知道的是,五种数据类型在java里面对用着五个不同的对象,每个对像能操作一种类型的数据。

string类型redisTemplate.opsForValue()
哈希 hashredisTemplate.opsForHash()
列表 listredisTemplate.opsForList()
集合 set redisTemplate.opsForSet()
有序集合 sorted set/zsetredisTemplate.opsForZSet()

总结:基于以上内容,我们认识了redis,以及如何在java代码里面对redis进行相关的操作,小编将在本系列文章的(二)里面进行讲解如何进行缓存,以及使用SpringCache框架对redis进行缓存的操作。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值