Redis 零基础入门本地实现数据增删

1.认识常见的数据结构类型及redis命令

1.1 String字符串

复制代码
SETEX key seconds value   # 设置值并指定过期时间
INCR key              # 值加1
DECR key              # 值减1
INCRBY key increment  # 增加指定数值
APPEND key value      # 追加字符串
STRLEN key            # 获取字符串长度
GETSET key value      # 设置新值返回旧值

1.2 List列表

复制代码
LPUSH key value       # 左侧插入
RPUSH key value       # 右侧插入
LPOP key              # 左侧弹出
RPOP key              # 右侧弹出
LRANGE key start end  # 获取范围元素
LLEN key              # 获取列表长度
LINDEX key index      # 获取指定位置元素
LREM key count value  # 删除元素

1.3 set 集合(值不能重复)

复制代码
SADD key member       # 添加成员
SREM key member       # 删除成员
SMEMBERS key          # 获取所有成员
SISMEMBER key member  # 判断是否成员
SCARD key             # 获取成员数量
SINTER key1 key2      # 交集
SUNION key1 key2      # 并集
SDIFF key1 key2       # 差集

1.4 Hash 哈希

复制代码
HSET key field value                    # 添加/更新字段
HMSET key field1 value1 [field2 value2 ...]  # 批量添加/更新字段(已废弃,建议用 HSET)
HGET key field                          # 获取字段值
HMGET key field1 [field2 ...]           # 批量获取字段值
HGETALL key                             # 获取所有字段和值
HDEL key field [field ...]              # 删除一个或多个字段
HEXISTS key field                       # 判断字段是否存在
HKEYS key                               # 获取所有字段名
HVALS key                               # 获取所有字段值
HLEN key                                # 获取字段数量
HINCRBY key field increment             # 对字段值增加整数(原子操作)
HINCRBYFLOAT key field increment        # 对字段值增加浮点数

1.5 有序集合Zset(常用于排名)

复制代码
ZADD key score member   # 添加成员
ZRANGE key start end [WITHSCORES]  # 按排名查询
ZREVRANGE key start end [WITHSCORES] # 逆序查询
ZRANGEBYSCORE key min max  # 按分数范围查询
ZREM key member         # 删除成员
ZSCORE key member       # 获取分数
ZRANK key member        # 获取排名
ZCARD key               # 获取成员数量

2.实战

在 Java 项目中操作 Redis,最常用的方式是使用 Spring Boot + Spring Data Redis,首先创建项目

2.1引入依赖

复制代码
        <!-- redis -->
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.6.4</version>
        </dependency>

2.2本地配置application.yml文件

复制代码
  #redis配置
  redis:
    port: 6379
    host: localhost
    database: 0

2.3代码实现(写测试代码)

java 复制代码
package com.service;

import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

import javax.annotation.Resource;

@SpringBootTest
public class RedisTest {

    @Resource
    private RedisTemplate redisTemplate;//首先生成 RedisTemplate模板对象
    @Test
    public void test() {
        ValueOperations valueOperations = redisTemplate.opsForValue();//利用模板对象生成字符串操作对象,可操作字符串
        valueOperations.set("name", "supidan");
        System.out.println(valueOperations.get("name"));
        valueOperations.set("age", 18);
            
        ListOperations listOperations = redisTemplate.opsForList();//生成列表对象,可操作列表
    }
}

3 安装可视化操作软件Quickredis(软件开源免费,直接搜索下载)

Gitee

https://gitee.com/quick123official/quick_redis_blog/releases/

Github

https://github.com/quick123official/quick_redis_blog/releases/

百度网盘: https://pan.baidu.com/s/10MbD-yzd3Eimkau0PBBE1w 提取码: 3qhv

点击Direct即可以连接本地redis

上面key是经过序列化的,所以QuickRedis无法正常查看但是使用使用RedisDesktopManager可以看到"supidan",值同样也是经过序列化的。

获取redis的值

接下来直接运行

可以清楚的看到值,恭喜你已经可以自主探索了!!!

但是我们还没有解决这个问题,"key"序列化,我们都没办法使用软件Quickredis修改、查看值了

所以接下来我们学一招!!!

自定义模板redistemplate

java 复制代码
package com.config;

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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

/**
 *
 *  自定义序列化
 *
 */
@Configuration
public class RedisTemplateConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        //创建RedisTemplate对象
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
       //设置连接工厂
        redisTemplate.setConnectionFactory(connectionFactory);
        //设置Key的序列化
        redisTemplate.setKeySerializer(RedisSerializer.string());

        //创建Json序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        //设置Value的序列化
        redisTemplate.setValueSerializer(jsonRedisSerializer);

        return redisTemplate;
    }
}

接下来我们运行代码,查看结果

但是我们现在运行代码

复制代码
name

结果却令人失望,为什么我的值取不到了?因为我们定义了新的模板,我们用现在的模板去取对应值肯定不行。

我们梳理一下流程利用现在的模板生成对应的key是name,而之前生成的key是序列化的,所以说根本不是同一个东西,当然就取不到了!!!

然后我们再取一下现在的值

java 复制代码
package com.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

import javax.annotation.Resource;

@SpringBootTest
@RunWith(org.springframework.test.context.junit4.SpringRunner.class)
public class RedisTest {

    @Resource
    private RedisTemplate redisTemplate;
    @Test
    public void test() {
        ValueOperations valueOperations = redisTemplate.opsForValue();
//        valueOperations.set("supidan", "dashuaibi");
        System.out.println(valueOperations.get("supidan"));
//        valueOperations.set("age", 18);
//        valueOperations.set("beauitfulgirl", "supidan's girlfriend");
        System.out.println(valueOperations.get("beauitfulgirl"));
//        ListOperations listOperations = redisTemplate.opsForList();

    }
}

运行代码,走你!

嗯嗯,很不错,和想象中的一样,是不是很简单呀,快跟着皮蛋动起手练起来吧阿巴阿巴~

相关推荐
zzzll11111 小时前
用 DeepSeek Harness 手搓一个自己的 Agent
数据库
名字还没想好☜1 小时前
Spring @EventListener 事件驱动解耦实战:同步转异步、事务绑定与顺序控制
java·数据库·后端·python·spring
del1 小时前
第十周技术博客
数据库
1314lay_10071 小时前
C#调用Sql Server存储过程,并且使用传入表结构
数据库·经验分享·笔记·sqlserver·c#
anxiao_m1 小时前
2026大文件传输软件推荐,从速度安全多维度客观测评
数据库·文件传输·传输
2601_962301012 小时前
缓存知识点总结
缓存·知识点·总结·后端开发·面试复习
IT大白鼠2 小时前
MySQL 分布式集群系列 · 第七篇——生产调优实战:NDB 性能、内存、高可用全方位优化
数据库·分布式·mysql
IvorySQL2 小时前
打造下一代 AI Agent 的统一多模智能数据底座——PostgreSQL 与 AI 的融合演进
数据库·人工智能·postgresql
ShineWinsu2 小时前
对于MySQL:内置函数的解析
linux·数据库·c++·mysql·面试·函数·查询
isNotNullX2 小时前
智能问数为什么答不准?数据、语义、模型、SQL四层拆解
数据库