您的位置:首页 > 数据库 > Redis

Redis基础快速掌握

2020-07-16 05:08 148 查看

Redis下载与安装

具体下载安装文章来源:https://blog.csdn.net/kkijhuybjju/article/details/107097241

Linux系统可能会遇到的问题没有wget命令(-bash: wget: 未找到命令)
解决:yum -y install wget

Nosql

  • NoSQL:即
    Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充
  • 作用:
    应对基于海量用户和海量数据前提下的数据处理问题
  • 特征: 可扩容,可伸缩
  • 大数据量下高性能
  • 灵活的数据模型
  • 高可用
  • 常见 Nosql 数据库:
      Redis
    • memcache
    • HBase
    • MongoDB

    Redis

    • 概念:
      Redis (REmote DIctionary Server)
      是用 C 语言开发的一个开源的高性能键值对(key-value)数据库
    • 特征:
    1. 数据间没有必然的关联关系
    2. 内部采用单线程机制进行工作
    3. 高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。
    4. 多数据类型支持
      ◆ 字符串类型 string
      ◆ 列表类型 list
      ◆ 散列类型 hash
      ◆ 集合类型 set
      ◆ 有序集合类型 zset/sorted_set
    5. 支持持久化,可以进行数据灾难恢复
    • redis 数据存储格式

      redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储
    • 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串
  • 应用场景

      为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
    • 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
    • 时效性信息控制,如验证码控制、投票控制等
    • 分布式数据共享,如分布式集群架构中的 session 分离
    • 消息队列
  • redis为每个服务提供有16个数据库,编号从0到15

  • 每个数据库之间的数据相互独立

      db 基本操作

      切换数据库: select index
      数据移动: move key db
      数据总量:dbsize
      数据清除(一般禁用这两个指令): flushdb.flushall

    Redis的基本操作

    • 命令行模式工具使用

      帮助信息查阅

    help [command]
    例如:help set

    • 退出指令

    quit
    exit
    快捷键:Ctrl+C

    • 清除屏幕信息

    clear

    Redis基本数据类型

    string 字符串

    • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
    • 存储数据的格式:一个存储空间保存一个数据
    • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用
    • 应用场景:很常见的场景用于统计网站访问数量,当前在线人数等。incr命令(++操作)
    hash

    hash存储格式

    • 存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
    • 需要的存储结构:一个存储空间保存多个键值对数据
    • hash类型:底层使用哈希表结构实现数据存储
    • 应用场景:例如存储、读取、修改用户属性(name,age,pwd等),双11有上限数量商品的抢购

    hash存储结构优化

    • 如果field数量较少,存储结构优化为类数组结构
    • 如果field数量较多,存储结构使用HashMap结构

    hash基本操作

    list

    list存储格式

    • 存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
    • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
    • list类型:保存多个数据,底层使用双向链表存储结构实现
    • 应用场景:1.最新消息排行榜。2.消息队列,以完成多程序之间的消息交换。使用push操作将任务存放在list中,然后线程在用pop操作将任务取出进行执行。

    list基本操作

    set

    set存储格式

    • 新的存储需求:存储大量的数据,在查询方面提供更高的效率
    • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
    • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
    • 应用场景: 排行榜
    • set 类型数据操作的注意事项

      set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份
      set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

    set基本操作

    HelloWorld(Jedis版)

    Java语言连接redis服务

    Jedis
    SpringData Redis
    Lettuce

    客户端连接redis

    public class JedisTest {
    
    public static void main(String[] args) {
    //1.获取连接对象
    //        Jedis jedis = new Jedis("192.168.40.130",6379);
    Jedis jedis = JedisUtils.getJedis();
    //2.执行操作
    jedis.sadd("set1","abc","abc","def","poi","cba");
    Long len = jedis.scard("set1");
    System.out.println(len);
    //3.关闭连接
    jedis.close();
    }
    }

    Redis持久化

    RDB

    将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据

    • RDB启动方式 —— save指令

      手动执行一次保存操作:

      save

      save指令的执行会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞

    • RDB启动方式 —— save指令相关配置

    • RDB启动方式 —— bgsave指令

      bgsave
      :手动启动后台保存操作,但不是立即执行:

    • RDB启动方式 —— bgsave指令相关配置

      bgsave命令是针对save阻塞问题做的优化

    • RDB启动方式 —— bgsave指令工作原理

    AOF

    以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。与RDB相比可以简单理解为由记录数据改为记录数据产生的变化

    • AOF写数据过程
    启动AOF相关配置

    AOF写数据三种策略(appendfsync)
    • always(每次):每次写入操作均同步到AOF文件中
      数据零误差,性能较低,不建议使用。
    • everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,在系统突然宕机的情况下丢失1秒内的数据
      数据准确性较高,性能较高,建议使用,也是默认配置
    • no(系统控制):由操作系统控制每次同步到AOF文件的周期整体过程不可控
    AOF重写

    随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。

    AOF重写作用
    • 降低磁盘占用量,提高磁盘利用率
    • 提高持久化效率,降低持久化写时间,提高IO性能
    • 降低数据恢复用时,提高数据恢复效率
    AOF重写规则
    • 进程内具有时效性的数据,并且数据已超时将不再写入文件
    • 非写入类的无效指令将被忽略,只保留最终数据的写入命令
      如del key1、 hdel key2、srem key3、set key4 111、set key4 222等 如select指令虽然不更改数据,但是更改了数据的存储位置,此类命令同样需要记录
    • 对同一数据的多条写命令合并为一条命令
      如lpush list1 a、lpush list1 b、 lpush list1 c 可以转化为:lpush list1 a b c。
      为防止数据量过大造成客户端缓冲区溢出,对list、set、hash、zset等类型,每条指令最多写入64个元素
    AOF重写方式
    • 手动重写 bgrewriteaof
  • 自动重写触发条件设置
      auto-aof-rewrite-min-size size
      auto-aof-rewrite-percentage percentage
    • aof_current_size
      aof_base_size
    • 自动重写触发条件
    AOF工作流程

    AOF重写流程


  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: