redis数据库详解,从命令行到java

啥是redis数据库

  • redis数据库,就是个数据库,本章完~剩下知识做了解即可
  • redis数据库是非关系型数据库
  • 它是将数据存储在内存中的数据库,而关系型数据库(例如mysql)是在持久化存储设备上存储数据
  • 因为web2.0之后,不再是静态web页面,更多的是人机交互,所以使用传统关系数据库就太慢了,这时有人用c语言写出了redis,它运算速度简直快到不得了
  • 我们知道,cpu是有缓存的,当用户查数据时,会先在缓存查,缓存没有在去cpu查,查完后会将这条数据放到缓存中,下次查询时就会更快,而redis就是类似cpu的缓存,把关系数据库内容临时放到redis中,进行操作,贼快
  • 关系数据库和非关系型数据库不存在取代关系,而是互补关系,就像cpu和缓存

redis的下载

  • 百度redis中文网,进入redis的中国分站,网址:https://www.redis.net.cn/在这里插入图片描述
  • 进入官网下载(官网下载是Linux版本)在这里插入图片描述
  • 下载windows版本需要使用GitHub,网址:https://github.com/MicrosoftArchive/redis/releases在这里插入图片描述
  • 下载完成后,解压即可使用在这里插入图片描述
  • 文件功能介绍
    • redis.windows.conf:配置文件
    • redis-cli.exe:redis的客户端
    • redis-server.exe:redis的服务器端
  • 运行测试
    • 打开服务器端在这里插入图片描述
    • 运行客户端在这里插入图片描述

redis的数据结构

  • redis的数据结构
    • redis存储数据的结构是key-value的形式(也就是键值对),key只能是字符串value有5种不同数据结构
      value5种结构如下:
      • string 字符串类型(相当于一个键对应了一个字符串)
      • hash 哈希类型,类似于java的map集合,键值对格式(相当于一个键对应了一个对象)
      • list 列表类型,数据可重复(相当于一个键对应了一个集合,一个集合有很多数据,可以重复)
      • set 集合类型,数据不可重复(一个键对应一个集合,但元素不能重复)
      • sortedset 有序集合类型,数据有序且不可重复(对应集合但有序又不可重)

使用命令行操作redis

  • 官方文档(可以参考官方文档查找命令)在这里插入图片描述
  • string类型命令
    • 存储:set key value
    • 获取:get key
    • 删除:del key在这里插入图片描述
  • hash
    • 存储:hset key field value
    • 获取:hget key field
    • 获取全部:hgetall key
    • 删除:hdel key field在这里插入图片描述
  • list(将list想象成一个走廊,一个位置只能站一个人,两边都可以进人,我们可以选择从左边或从右边进入,最先进去的人在最里面,也最后出来,最后进去的人,在最外面,也最先可以出来)
    • 存储:
      • 从左边插入数据:lpush key value
      • 从右边插入数据:rpush key value
    • 获取:
      • lrange key start end:范围获取
    • 删除:
      • lpop key:删除列表最左边数据
      • rpop key: 删除列表最右边数据 在这里插入图片描述在这里插入图片描述
  • set(主要用于做并集,交集,差集等运算获取数据)
    • 存储:sadd key value
    • 获取全部:smembers key
    • 删除指定:srem key value 在这里插入图片描述
  • sortedset
    • 存储:zadd key score value
    • 获取:zrange key start end
    • 删除:zrem key value在这里插入图片描述
  • 通用命令
    • keys * :查询所有键
    • type key:获取指定键对应值的数据类型
    • del key:删除指定key在这里插入图片描述

redis持久化

  • 什么是持久化:
    • 因为redis是非关系型数据库,数据临时保存在内存,一旦断电,数据就会丢失,所有需要将数据保存到持久化设备上,以防数据丢失,下次启动redis时,可以将数据恢复
  • redis的持久化机制
    • RDB:redis默认方法,无需配置,在一段时间间隔过后,检测key的变化情况,如果变化,就持久化当前数据
    • AOF:使用日志功能实现每操作一次数据库,就持久化一次,因为这和关系型数据库基本类似了,而且消耗大量资源,所以不推荐使用
  • RDB持久化
    • 打开redis.windows.conf文件,找到配置信息在这里插入图片描述

         # after 900 sec (15 min) if at least 1 key changed
         表示如果在900秒(15分钟)内有至少一个key发生改变,就持久化一次
         save 900 1
         # after 300 sec (5 min) if at least 10 keys changed
         表示如果在300秒(5分钟)内有至少10个key发生改变,就持久化一次
         save 300 10
         # after 60 sec if at least 10000 keys changed
          表示如果在60秒内有至少10000个key发生改变,就持久化一次
         save 60 10000
      
  • 测试持久化
    • 修改配置文件,改成如果5秒内有两个key发生改变就持久化一次(改完记得保存)在这里插入图片描述
    • 以命令行方式打开服务端在这里插入图片描述在这里插入图片描述
    • 目录中双击打开客户端(无需命令行)
    • 进行命令行的键设置在这里插入图片描述在这里插入图片描述在这里插入图片描述
      最后记得将配置文件改回来
      在这里插入图片描述
  • AOF持久化(除了配置的步骤不一样,使用都和RDB模式一样,持久化后文件后缀名为aof)在这里插入图片描述

使用jedis操作数据库

  • 什么是jedis:

    jedis是一款java操作redis数据库的工具
  • 下载jedis相关jar包或者Maven导入

    • jedis:直接百度jedis,然后下载即可
    • commons-pool:直接百度,然后下载即可
  • 使用java操作redis数据库

    • 创建Maven工程在这里插入图片描述
    • 导包,新建测试类
      在这里插入图片描述在这里插入图片描述
    • 测试
      在这里插入图片描述在这里插入图片描述
  • 使用jedis操作string类型数据

  • 从下图可以看到,jedis的方法名和redis的命令名是相同的,所以我们想要用jedis的方法依然参照redis官方文档即可在这里插入图片描述 在这里插入图片描述
  • 使用jedis操作hash类型数据

    • 将获取连接和释放资源分离出来
      在这里插入图片描述
    • 编写测试方法在这里插入图片描述
  • list

在这里插入图片描述

  • set

在这里插入图片描述

  • sorted set

在这里插入图片描述

Jedis连接池

  • 不同于jdbc,jedis无需第三方提供连接池,它自己携带JedisPool连接池在这里插入图片描述
  • 一些其他配置在这里插入图片描述
发布了23 篇原创文章 · 获赞 0 · 访问量 601

猜你喜欢

转载自blog.csdn.net/grd_java/article/details/105055371