Redis基本使用!

article/2025/10/25 16:03:12

目录

1.基本概念:

1.Redis的安装和启动

下载

目录结构

3.Redis的命令(重点)

Redis数据结构

 1.String字符串(重点)

2.Hash哈希(重点)

 3.Set集合

 4.ZSet集合

通用命令

4.Jedis的基本使用(了解) 相当于JDBC

JedisAPI

5.SpringDataRedis(重点*****)

操作哈希类型数据

操作列表类型数据

操作集合类型数据(扩展)

操作有序集合类型数据(扩展)

通用操作(必须掌握)


1.基本概念:

1.redis介绍: 

        redis是一个 基于 内存 的  key = value 结构数据库

端口号:6379

 2.主要特点:

        1.内存存储,读写性能高 - Redis读的 速度是110000次/S

        2.它存储的 value 类型比较丰富(5种数据类型),也称为结构化NoSQL数据库

        3. 适合存储热点且不是时刻发生改变的数据(商品、资讯、新闻)

 3.NoSQL介绍

        NoSQL(Not Only SQL )不仅仅是SQL,泛指==非关系型数据库==

关系型数据库 (Mysql,Oracle等)

        优点:

                1.易于维护:都是使用表结构,格式统一

                2.使用方便:SQL语言通用

                3.可以多表查询:可用于一个表或多个表之间非常复杂查询

        缺点:

                1.储存在硬盘上,所以读写能力比较差

                2.固定的表结构,灵活性差

                3.高并发读写需求,硬盘I/O是一个很大的瓶颈

非关系型数据库(redis,MongoDB等)

        优点:

                1.格式灵活:储存数据的格式可以是key,value等形式的应用场景。

                2.速度快:nosql可以使用硬盘或内存为载体,而非硬盘;

                3.成本低:nosql数据库部署简单,基本都是免费的;

        缺点:

                1.不提供sql支持,学习和使用成本较高。

                2.一般没有事务处理

                3.复杂查询方面欠缺

1.Redis的安装和启动

下载

  • Reids官网地址:Redis

  • 中文网地址:Redis中文网

 

目录结构

目录或文件作用
redis-benchmark性能测试工具
redis-check-aofAOF文件修复工具
redis-check-dumpRDB文件检查工具(快照持久化文件)
redis-cli命令行客户端
redis-server启动redis服务器
redis.windows.confredis核心配置文件

 

启动服务:

 启动命令行:

3.Redis的命令(重点)

Redis数据结构

Redis采用的是键值对存储,(key)键的类型只能为字符串,(value)值支持五种数据类型:

  • 字符串:String

  • 哈希:HashMap

  • 双向链表:LinkedList

  • 无序集合:HashSet

  • 有序集合:LinkedHashSet

 1.String字符串(重点)

  字符串类型是Redis中最为基础的数据存储类型

    * 新增  set key value
    * 查询  get key

    * 删除  del key

    * 新增的时候设置过期时间(验证码)  setex key second value
    * 查看剩余时间   ttl key        
    * 根据键判断记录是否存   exists key    0:不存在 1:存在

2.Hash哈希(重点)

Hash类型极其类似于java中的Map,值里面可以存放一组组的键值对

该类型非常适合于存储java中对象的信息

* 新增   hset key hkey hvalue
        
* 查询 所有  hgetall key
          单个   hget key hkey
  * 删除
    
删除单个value的key    hdel key hkey
删除redis的key            del key 
        
* 获取所有hkey            hkeys key 
        
* 获取所有hvalue          hvals key         
* 新增
    左压入
        lpush key value
    右压入
        rpush key value
        
        
* 列表长度
        llen key        
        
* 查询元素
        lrange key  [开始索引  结束索引]
                      0         -1
* 删除元素
    左弹出
        lpop key
    右弹出
        rpop key

 3.Set集合

Set类型底层是一张hash表。里面的元素是无序的,不可重复的

* 新增
        sadd key value
    
 * 查询集合数量
        scard key   
    
* 查询元素
        smembers key
                
* 删除元素    
        srem key value

 4.ZSet集合

Zset,也称sortedSet, 在Set的基础上,加入了有序功能,在添加元素的时候,允许指定一个分数,它会按照这个分数排序

* 新增
        zadd key score value
        
* 查询
    升序
        zrange key [开始索引  结束索引] [withscores] 
    降序    
        zrevrange key [开始索引  结束索引] [withscores] 

* 删除
        zrem key value

通用命令

* 模糊查询键
        keys *

* 删除键
        del key....

* 根据键判断值类型 
        type key

* 选择数据库
        select 0~15

* 清空当前数据库
        flushdb

* 清空所有数据库
        flushall

4.Jedis的基本使用(了解) 相当于JDBC

Redis作为一款优秀的缓存服务器存在,大多数语言都提供了连接Redis的驱动包,在java中,比较出名的是Jedis和Redisson,我们今天以Jedis为例学习,看看如何是用程序操作redis。

JedisAPI

方法解释
new Jedis(host, port)创建jedis对象,参数host是redis服务器地址,参数port是redis服务端口
set(key,value)设置字符串类型的数据
get(key)获得字符串类型的数据
hset(key,field,value)设置哈希类型的数据
hget(key,field)获得哈希类型的数据
lpush(key,values)设置列表类型的数据
lpop(key)列表左面弹栈
rpop(key)列表右面弹栈
del(key)删除指定的key

<dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.3</version></dependency>
</dependencies>
 public static void main(String[] args) {// 1.创建连接Jedis jedis = new Jedis("127.0.0.1", 6379);// 2.新增jedis.set("1002", "李四");//3.查询String value = jedis.get("1002");System.out.println(value);// 4.关闭连接jedis.close();}

 Jedis连接池

  public static void main(String[] args) {// 0.创建连接池配置对象JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(50); // 最大连接数config.setMaxIdle(20); // 最大空闲数// 1.创建连接池JedisPool jedisPool = new JedisPool(config,"127.0.0.1",6379);// 2.获取连接Jedis jedis = jedisPool.getResource();// 3.进行 新增、修改、删除、查询// 4.归还连接jedis.close();}

5.SpringDataRedis(重点*****)

介绍:

Spring Data Redis提供了 从Spring应用程序轻松配置和访问Redis的功能

通过RedisTemplate对底层Jedis进行了高度封装,提供了redis各种操作

  • ValueOperations:简单键值对操作 String


  • SetOperations:set类型数据操作 set


  • ZSetOperations:zset类型数据操作 sortedset---->zset


  • HashOperations:针对hash类型的数据操作 hash


  • ListOperations:针对list类型的数据操作 list

环境搭建

1.依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.5</version>
</parent><dependencies><!-- SpringDataRedis框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- spring测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

2.配置文件

spring:redis:host: localhostport: 6379database: 0 # 操作的是0号数据库jedis: #Redis连接池配置pool:max-active: 8 #最大连接数max-wait: 1ms #连接池最大阻塞等待时间max-idle: 4 #连接池中的最大空闲连接min-idle: 0 #连接池中的最小空闲连接

3.API

    @Autowiredprivate RedisTemplate redisTemplate;//二进制(能取,在可视化工具中看不到数据)@Autowiredprivate StringRedisTemplate stringRedisTemplate;//RedisTemplate 的子类 

3.1 操作value

        // 操作字符串类型
@Test
public void test01() throws Exception {// 获取string操作对象ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();// 存值opsForValue.set("city", "北京");// 取值String value = opsForValue.get("city");System.out.println(value);// 存验证码存活5分钟opsForValue.set("sms_13700137000", "6375",TimeUnit.SECONDS);//删除redisTemplate.delete("city");}

操作哈希类型数据

// 操作hash类型
@Test
public void test02() throws Exception {// 获取hash操作对象HashOperations<String, Object, Object> opsForHash = stringRedisTemplate.opsForHash();// 存值//opsForHash.put("1005", "nage", "zhangsan");//opsForHash.put("1005", "age", "18");//opsForHash.put("1005", "sex", "man");// 取出年龄String age = (String) opsForHash.get("1005", "age");System.out.println(age);System.out.println("---------------");// 取出所有keySet<Object> keys = opsForHash.keys("1005");for (Object key : keys) {System.out.println(key);if("sex".equals(key)){ops.delete("1005",key); //删除map中的key}}System.out.println("---------------");// 取出所有valueList<Object> values = opsForHash.values("1005");for (Object value : values) {System.out.println(value);}// 删除stringRedisTemplate.delete("1005");
}

操作列表类型数据

// 操作list类型
@Test
public void test03() throws Exception {// 获取list操作对象ListOperations<String, String> opsForList = stringRedisTemplate.opsForList();// 存值//opsForList.leftPush("alist", "a");//opsForList.leftPush("alist", "b");opsForList.leftPushAll("alist", "a", "b");opsForList.rightPush("alist", "c");// 取值List<String> list = opsForList.range("alist", 0, -1);for (String s : list) {System.out.println(s);}System.out.println("--------------");// 获取list长度Long size = opsForList.size("alist");System.out.println(size);System.out.println("--------------");// 遍历删除for (Long i = 0l; i < size; i++) {// 弹出System.out.println(opsForList.rightPop("alist"));}}

操作集合类型数据(扩展)

// 操作set类型
@Test
public void test04() throws Exception {// 获取set操作对象SetOperations<String, String> opsForSet = stringRedisTemplate.opsForSet();// 存值// opsForSet.add("lol", "a", "b", "c", "a");// 获取Set<String> lol = opsForSet.members("lol");for (String s : lol) {System.out.println(s);}// 删除opsForSet.remove("lol", "a");}

操作有序集合类型数据(扩展)

// 操作zset类型
@Test
public void test05() throws Exception {// 获取 zset操作对象ZSetOperations<String, String> opsForZSet = stringRedisTemplate.opsForZSet();// 存值// opsForZSet.add("wangzhe", "安其拉", 66.6);// opsForZSet.add("wangzhe", "兰陵王", 68.6);// opsForZSet.add("wangzhe", "后羿", 79.6);// 修改// opsForZSet.add("wangzhe", "安其拉", 85.6);// 删除opsForZSet.remove("wangzhe", "兰陵王");// 取值Set<String> wangzhe = opsForZSet.reverseRange("wangzhe", 0, -1);for (String s : wangzhe) {System.out.println(s);}}

通用操作(必须掌握)

// 通用操作
@Test
public void test06()throws Exception{// 查询所有keySet<String> keys = stringRedisTemplate.keys("*");for (String key : keys) {System.out.println(key);}// 判断某个key是否存在Boolean itheima = stringRedisTemplate.hasKey("1005");System.out.println(itheima);// 判断某个key的类型DataType type = stringRedisTemplate.type("1005");System.out.println(type.name());
}


http://chatgpt.dhexx.cn/article/qf7yio33.shtml

相关文章

人工智能的几个研究方向

人工智能主要研究内容是&#xff1a;分布式人工智能与多智能主体系统、人工思维模型、知识系统、知识发现与数据挖掘、遗传与演化计算、人工生命、人工智能应用等等。 其中热门研究有以下几种。 一、计算机视觉 就包括图像识别&#xff0c;视频识别&#xff0c;具体应用有人…

学习人工智能可以从事哪些职业,有哪些就业前景和薪资待遇?

学习人工智能可以从事的职业非常广泛&#xff0c;就业前景非常广阔&#xff0c;随着人工智能技术的不断发展和应用&#xff0c;人工智能相关职位的需求将会越来越大。以下是一些主要的职业方向&#xff1a; 学习人工智能可以从事哪些职业&#xff0c;有哪些就业前景和薪资待遇&…

人工智能机器人专业就业前景怎样

在大数据时代&#xff0c;人工智能的相关技术越来越受到关注&#xff0c;人工智能产品的市场话语权也越来越大。因此&#xff0c;许多科技公司已经开始在人工智能领域实施战略布局。人工智能的就业前景如何&#xff1f;让我们来看看吧&#xff01; 第一&#xff1a;智能化是未来…

学人工智能就业前景怎么样?学AI有前途吗?

学习人工智能已经成为了当前热门的趋势。由于人工智能的技术应用越来越广泛&#xff0c;因此&#xff0c;学习人工智能的前景非常广阔。以下是学习人工智能就业前景的一些解释&#xff1a; 学人工智能就业前景怎么样&#xff1f; 市场需求 近年来&#xff0c;人工智能技术的应…

人工智能行业,就业方向和研究领域的简单介绍

人工智能行业&#xff0c;目前的就业方向&#xff0c;主要分为搜索、图像处理、计算机视觉、模式识别和图像处理等等&#xff0c;具体如下&#xff1a; 搜索方向 &#xff1a;百度、谷歌、微软、yahoo等&#xff08;包括智能搜索、语音搜索、图片搜索、视频搜索等都是未来的就业…

2022年了人工智能就业前景越来越严峻了,你还在坚持吗?

现在的人工智能只能算是大餐前的甜点&#xff0c;真正的大餐还没开始。所以现在就是好好学习&#xff0c;修炼内容的时候&#xff0c;等到时机成熟&#xff0c;自己的发展也自然会迈上另一个台阶。 像ai作画&#xff0c;之前知乎热搜很难不爱&#xff0c;这个是真的会替代人工…

人工智能就业指南

目录 AI革命进行时 人工智能的未来 人工智能应用于哪些核心产业领域 人工智能领域的拓展对就业的影响 人工智能领域最热门就业机会 人工智能工程师需要做什么 十大AI技能 招聘人工智能专业人员的顶级公司 规划你的AI学习路径 AI革命进行时 过去几年里&#xff0c;数字…

人工智能就业前景如何?

随着5 G、人工智能等技术的发展&#xff0c;人工智能行业的发展趋势也越来越明朗&#xff0c;那么人工智能就业前景如何呢&#xff1f;随着技术的不断发展和成熟&#xff0c;人工智能会带来很多行业变革&#xff0c;我们来了解一下人工智能在各行各业中会有哪些新应用或者新方向…

研究生人工智能就业没烦恼?一文了解研究生AI就业前景

人工智能&#xff0c;现在已被国家列入发展规划&#xff0c;国家提出了人工智能三步走的发展战略&#xff0c;现工智能已经有了国家战略的背景支持。因此&#xff0c;在今后的发展当中&#xff0c;肯定是会越来越火热。 根据领英发布的全球人工智能人才分布显示&#xff0c;中…

学人工智能有前途吗?人工智能前景-AI就业方向

学习人工智能具有非常大的前途。不仅可以获得在市场上有很大需求的技能&#xff0c;还可以涉及到许多领域的应用&#xff0c;同时可以不断学习和发展&#xff0c;拓展个人职业生涯和创业方向。以下是几个方面的解释&#xff1a; 学人工智能有前途吗&#xff1f; 人工智能市场前…

人工智能专业就业有哪些岗位方向

什么是智能科学与技术专业?是制造机器人的吗&#xff1f;就业前景怎么样 什么是智能科学与技术专业&#xff1f;智能科学与技术专业是一个交叉学科&#xff0c;也属于计算机相关的专业&#xff0c;研究方向是人工智能方向。很多人都以为它是制造好了吧&#xff01;国防都与智能…

人工智能就业前景怎么样?

人工智能再传好消息&#xff01;第2期学生毕业仅2个工作日&#xff0c;就业率高达50%&#xff0c;最高薪达到24k&#xff01;平均薪资再创新高&#xff0c;突破19k&#xff01; 赶紧和播妞一起看看黑马程序员人工智能AI班2期学生的就业佳绩&#xff01; 部分学生就业薪资展示 …

人工智能值不值得学习?人工智能就业方向及前景

人工智能值不值得学习? 一、人工智能值得学吗&#xff1f; 很多同学想要知道人工智能值得学吗&#xff1f;小编认为是值得的&#xff0c;具体原因有以下两点&#xff1a; 1、人工智能专业前景好&#xff0c;但人才紧缺 根据人工智能行业的专家预计&#xff0c;到2020年&am…

人工智能专业好就业吗?AI就业前景

最近两到三年&#xff0c;可以发现全国各大高效纷纷开设了人工智能AI专业。许多人不知道人工智能毕业可以做什么&#xff0c;人工智能专业好就业吗&#xff1f;AI就业前景怎么样&#xff1f;目前来看人工智能非常符合目前的社会发展需求&#xff0c;这一领域内目前的人才需求量…

人工智能的就业方向有哪些?

关于AI在的就业方向主要有&#xff0c;科研机构(机器人研究所等)&#xff0c;软硬件开发人员&#xff0c;高校讲师等&#xff0c;在国内的话就业前景是比较好的&#xff0c;国内产业升级&#xff0c;IT行业的转型工业和机器人和智能机器人以及可穿戴设备的研发将来都是强烈的热…

机器人/人工智能/就业形势2023

机器人/人工智能/就业形势2022 https://blog.csdn.net/ZhangRelay/article/details/124441772 机器人人工智能课程需求和就业趋势-2022- https://blog.csdn.net/ZhangRelay/article/details/127087308 如上已成往事。 2023年如何呢&#xff1f; 之前文章都过于简洁&#xff0c;…

学人工智能好就业吗?可以做什么?AI就业方向及前景

学习人工智能确实是一个非常好的选择&#xff0c;因为AI目前正在快速地发展和应用到各个领域&#xff0c;有很多的就业机会。 学人工智能好就业吗&#xff1f;可以做什么&#xff1f;AI就业方向及前景 AI就业方向包括但不限于以下几个方面&#xff1a; 机器学习工程师&#xf…

人工智能有哪些方向?什么方向有前景?

目前人工智能的技术方向有&#xff1a; 1、计算机视觉——计算机视觉(CV)是指机器感知环境的能力; 2、语音识别——语音识别是指识别语音(说出的语言)并将其转换成对应文本的技术; 3、机器学习——机器学习(ML)是计算机系统为了有效地执行特定任务&#xff0c;不使用明确的指…

人工智能技术应用就业前景和就业方向

1、学习人工智能就业前景怎么样 人工智能的就业前景还是很不错的,人工智能的发展现状处于成长期,国家发布相关政策促进人工智能的发展,一些省份也比较重视人工智能的发展,并提出了相应的规划。 人工智能专业前景怎么样 1人工智能专业就业方向 科研机构(机器人研究所等)、软硬件…

人工智能技术应用就业方向及前景

人工智能技术已经成为当今最热门的领域之一&#xff0c;其应用前景非常广阔。以下是人工智能技术应用的几个就业方向及前景&#xff1a; 人工智能可以做什么&#xff1f; 机器学习工程师&#xff1a;机器学习是人工智能的核心技术之一&#xff0c;许多公司都需要拥有机器学习工…