Redis-从小白到入门
2026/8/28 6:17:56 网站建设 项目流程

一、简介

Redis是一个基于内存的key-value结构数据库;Redis教程

  • 基于内存存储,读写性能高;
  • 适合存储热点数据(如:热点商品、资讯、新闻等);

官网:前往
中文网站:前往

Redis安装包分为Windows版和Linux版

  • Windows版下载:快速下载通道
  • Linux版下载:快速下载通道

二、下载与安装

Redis的windows版属于绿色软件,直接解压即可使用,解压目录结构如下:

进入到解压目录内,在顶部文件路径输入cmd,进入cmd终端页面输入启动服务命令:

redis-server.exe redis.windows.conf


如果你想在 IDEA Shell Script 配置里面写启动命令

.\redis-server.exe redis.windows.conf


继续在解压目录下新开一个cmd终端窗口,输入启动客户端连接命令:redis-cli.exe, 然后输入:keys * ;进行查看就成功了

也可以通过命令连接指定地址和端口的redis服务:

//例如连接本地的redis服务 redis-cli.exe-h localhost-p6379

三、设置Redis服务的密码

redis默认是没有密码的,可以通过修改【redis.windows.conf】配置文件,进行密码设置;

  • 打开redis.windows.conf配置文件;
  • 全局搜索:requirepass foobared;
  • 去掉【#requirepass foobared】的#;
  • 将foobared 修改为你需要设置的密码【例如:123456】;
  • 保存文件重新启动服务;

    修改后:

退出服务命令:

exit 或 按键:ctrl+c

重启服务后,再连接进行操作就报错:【需要NOAUTH身份验证】;

可以通过命令进行快速认证连接:

redis-cli.exe-h localhost-p6379-a123456

就可以重新进行操作了!以上命令用法可以当做练手学习;

四、Redis图形软件的使用

安装redis的图形界面软件:【Another Redis Desktop Manger】
下载地址:Another Redis Desktop Manger
下载完成后双击运行安装就可以了;
进入到图形软件,点击【新建连接】,进行连接设置,设置完成点击确定就完成连接了;

五、Redis数据类型

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

    • 字符串 string
    • 哈希 hash
    • 列表 list
    • 集合 set
    • 有序集合 sorted set / zset
  2. 各种数据类型的特点

    • 字符串 string:最基础、常用的类型,可存储字符串、整数或浮点数,常用于缓存、计数器、分布式锁等场景;
    • 哈希 hash:也叫散列,类似于java中的HashMap结构,适合存储对象,如用户信息、商品详情,可对单个字段进行读写;
    • 列表 list:按插入顺序存储,支持两端操作,可以有重复元素,类似于java中的LinkedList,适合消息队列、最新动态列表;
    • 集合 set:元素唯一且无序,类似于java中的HashSet,适合去重、共同好友、标签等场景;
    • 有序集合 zset:元素唯一,集合中每个元素关联一个分数(score),根据分数进行升序排序,适合排行榜、延时队列等场景。
  3. 数据类型选型建议

    • 需要缓存热点数据、简单计数 → 优先考虑 string;
    • 需要存储结构化对象并频繁更新部分字段 → 优先考虑 hash;
    • 需要按时间顺序存取、实现队列 → 优先考虑 list;
    • 需要去重、求交集并集 → 优先考虑 set;
    • 需要按分数排序、做排行榜 → 优先考虑 zset。

六、Redis常用命令

  1. 键操作命令
命令示例说明
SETSET name zhangsan设置指定 key 的值,若 key 已存在则覆盖
GETGET name获取指定 key 的值,不存在时返回(nil)
DELDEL name删除一个或多个 key,返回被删除的数量
KEYSKEYS pattern,如:KEYS * 或者KEYS user*查找所有符合给定模式(pattern)的key
EXISTSEXISTS name判断 key 是否存在,存在返回 1,不存在返回 0
TYPETYPE name检查数据类型,返回对应的数据类型
EXPIREEXPIRE name 60设置 key 的过期时间(单位:秒),到期后自动删除
  1. 字符串命令
命令示例说明
INCRINCR count将 key 中存储的数字值加 1,常用于计数器、浏览量统计
DECRDECR count将 key 中存储的数字值减 1
APPENDAPPEND msg " world"将字符串追加到 key 原有值的末尾,返回追加后的总长度
  1. 哈希命令
命令示例说明
HSETHSET user:1 name zhangsan设置哈希表中指定字段的值,字段不存在则新建
HGETHGET user:1 name获取哈希表中指定字段的值
HDELHDEL user:1 name删除哈希表中的一个或多个字段
HKEYSHKEYS user:1获取哈希表中所有字段
HVALSHVALS user:1获取哈希表中所有值
  1. 列表命令
命令示例说明
LPUSHLPUSH list a b c从列表左侧(头部)插入一个或多个元素
RPUSHRPUSH list x y从列表右侧(尾部)插入一个或多个元素
LRANGELRANGE list [开始位置,如:0] [结束位置,如:-1]获取列表指定范围内的元素,"-1"代表:整个列表的最后位置
LLENLLEN list获取列表长度
LPOPLPOP list移除并返回列表左侧(头部)的第一个元素
RPOPRPOP list移除并返回列表右侧(尾部)的最后一个元素
  1. 集合命令
命令示例说明
SADDSADD gather a b c向集合中添加一个或多个元素,重复元素会被忽略
SMEMBERSSMEMBERS gather返回集合中的所有元素
SCARDSCARD gather获取集合的成员数
SINTERSINTER gather1 gather2返回给定所有集合的交集
SUNIONSUNION gather1 gather2返回给定所有集合的并集
SREMSREM gather a从集合中移除一个或多个元素
  1. 有序集合命令
命令示例说明
ZADDZADD zset 90 zhangsan向有序集合中添加元素并指定分数(score),用于排行榜等场景
ZRANGEZRANGE zset 0 -1 [WITHSCORES]按分数升序返回指定范围内的元素,withscores为可选输入,如输入,会把分数一起返回
ZINCRBYZINCRBY zset increment zhangsan有序集合中对指定成员的分数加上增量 increment
ZSCOREZSCORE zset zhangsan获取有序集合中指定元素的分数
ZREMZREM zset zhangsan移除有序集合中的一个或者多个元素
  1. 通用命令
命令示例说明
SELECTSELECT 1切换到指定的数据库(Redis 默认有 16 个库,编号 0-15)
DBSIZEDBSIZE返回当前数据库中 key 的总数量
FLUSHDBFLUSHDB清空当前数据库中的所有 key,操作前请谨慎确认

以上命令可通过图形操作软件进行测试;

七、在java中操作Redis

前面我们学习了 Redis 的命令行操作,接下来看看如何在 Java 项目中操作 Redis。本章将介绍常用的 Java 客户端,以及 Spring Data Redis 的使用方式,帮助你把 Redis 集成到实际项目中。

1. Redis的java客户端

常用的 Java 客户端有以下三种:

  • Jedis:轻量、简洁,是 Redis 官方推荐的 Java 客户端,API 直观,适合中小型项目;
  • Lettuce:基于 Netty 实现,支持同步、异步和响应式编程,性能优秀,是 Spring Boot 2.x 默认的客户端;
  • Redisson:功能最丰富,提供了分布式锁、分布式集合等高级特性,适合复杂分布式场景。

选型建议:如果是 Spring Boot 项目,直接使用默认的 Lettuce 即可;如果只是简单的工具类或非 Spring 项目,可以选择 Jedis。

下面以 Jedis 为例,演示在 Java 中操作 Redis:

<!-- Maven 依赖 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.4.3</version></dependency>
importredis.clients.jedis.Jedis;publicclassJedisDemo{publicstaticvoidmain(String[]args){// 1. 建立连接(默认端口 6379)Jedisjedis=newJedis("localhost",6379);// 2. 如果设置了密码,需要认证// jedis.auth("123456");// 3. 执行操作jedis.set("name","zhangsan");Stringname=jedis.get("name");System.out.println("name = "+name);// 4. 关闭连接jedis.close();}}

2. Spring Data Redis使用方式

Spring Data Redis 是对 Jedis/Lettuce 的进一步封装,提供了RedisTemplateStringRedisTemplate等模板类,让我们可以用更简洁的代码操作 Redis。

第一步:引入依赖

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

第二步:配置连接信息

# application.ymlspring:redis:host:localhostport:6379password:123456# 如果设置了密码则填写,没有则删除此行database:0

第三步:编写配置类(设置序列化器)

importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.redis.connection.RedisConnectionFactory;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;importorg.springframework.data.redis.serializer.StringRedisSerializer;@ConfigurationpublicclassRedisConfig{@BeanpublicRedisTemplate<String,Object>redisTemplate(RedisConnectionFactoryfactory){RedisTemplate<String,Object>template=newRedisTemplate<>();template.setConnectionFactory(factory);// key 使用字符串序列化器template.setKeySerializer(newStringRedisSerializer());// value 使用 JSON 序列化器template.setValueSerializer(newGenericJackson2JsonRedisSerializer());// hash 的 key 和 value 也使用同样的序列化器template.setHashKeySerializer(newStringRedisSerializer());template.setHashValueSerializer(newGenericJackson2JsonRedisSerializer());template.afterPropertiesSet();returntemplate;}}

第四步:在业务代码中使用

importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.stereotype.Service;@ServicepublicclassUserService{@AutowiredprivateRedisTemplate<String,Object>redisTemplate;// 缓存用户信息(使用 hash 类型)publicvoidcacheUser(StringuserId,Stringname){Stringkey="user:"+userId;redisTemplate.opsForHash().put(key,"name",name);redisTemplate.opsForHash().put(key,"age",25);}// 读取缓存publicObjectgetUserName(StringuserId){Stringkey="user:"+userId;returnredisTemplate.opsForHash().get(key,"name");}// 浏览量计数器(使用 string 类型)publicvoidincrementViewCount(StringarticleId){Stringkey="view:count:"+articleId;redisTemplate.opsForValue().increment(key);}}

小结:通过 Spring Data Redis,我们可以用面向对象的方式操作 Redis,无需关心底层连接管理。实际项目中,Redis 常用于缓存热点数据、分布式锁、计数器、消息队列等场景,建议结合前面学过的数据类型,在项目中多加练习。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询