热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis的各种用途以及使用场景

一、为什么使用1. 解决应用服务器的cpu和内存压力2. 减少io的读操作,减轻io的压力3.关系型数据库的扩展性不强,难以改变表结构二、优点1.nosql数据库没有关联关系,数据

一、为什么使用
1. 解决应用服务器的cpu和内存压力
2. 减少io的读操作,减轻io的压力
3.关系型数据库的扩展性不强,难以改变表结构

二、优点
1.nosql数据库没有关联关系,数据结构简单,拓展表比较容易
2.nosql读取速度快,对较大数据处理快

三、适用场景
1.    数据高并发的读写
2.    海量数据的读写
3.    对扩展性要求高的数据

四、不适场景
1.    需要事务支持(非关系型数据库)
2.    基于sql结构化查询储存,关系复杂

五、Redis结构
Redis是一个开源的key—value型数据库,支持string、list、set、zset和hash类型数据。对这些数据的操作都是原子性的,redus为了保证效率会定期持久化数据。

六、使用场景
1.    配合关系型数据库做高速缓存 ,缓存高频次访问的数据,降低数据库io, 分布式架构,做session共享
2.    可以持久化特定数据。利用zset类型可以存储排行榜 利用list的自然时间排序存储最新n个数据

七、Linux下redis
1.redis目录:usr/local/bin
2.linux下redis常用命令:
redis-benchmark:性能测试工具
redis-server:启动redis服务器
redis-cli:启动redis客户端,操作入口

八、Redis基础知识
1.    端口:6379
2.    默认16个数据库,下标从0开始
3.    单线程:redis是单线程+io多路复用:检查文件描述的就绪状态 ,Memchached:多线程+锁

1.    redis数据类型:String set list hash zset

九、Redis命令
1.    key操作 

String类型:String是二进制安全的,可以包含任何数据源,最大512m 

String批量处理:

1.    List:链表
特点:单键多值
Redis列表是简单的字符串列表,从左或者从右插入
底层是双向链表,对两端的操作性能很高,通过下标查询性能很低

Set:类似list的无序集合,保证列表中不会有重复数据,底层是一个value为null的hash表 

hash:键值对集合,类似map 

zset:与set集合非常相似,每个成员都关联了score,可以用来排序 

十、redis持久化
1.    两种方式:rdb(redis database)和aof(append of file)
2.    RDB:在指定时间间隔内,将内存中的数据作为一个快照文件(snapshot)写入到磁盘,读取的时候也是直接读取snapshot文件到内存中
①持久化过程:redis单独创建(fork)一个进程来持久化,会先将数据写入临时文件中,待上次持久化结束后,会将该临时文件替换上次持久化文件,比aof高效,但是最后一次数据可能会丢失
②Fork:在linux中,fork()会产生一个跟主进程一样的子进程,出于效率考虑,主进程和子进程会公用一段物理内存,当发生改变的时候,才会把主进程“”写时复制”一份给子进程
③Redis备份的文件:在redis.conf中设置,dbfilename默认为:dump.rdb
④ Rdb保存策略:
1.    900s 1 file change
2.    300s 10file change
3.    60s 10000file change

⑤Rdb的备份:       
1.    config get dir 得到备份的文件夹
2.    复制备份文件
   
⑥Rdb恢复:
1.    关闭redis
2.    将备份文件复制到工作目录下
3.    启动redis,自动加载
5.

1.    AOF : 以日志形式记录每个写操作,启动时通过日志恢复操作 , 开启AOF:默认不开启,进入redis.conf找到appendonly yes打开
2.    修复AOF:redis-check-aof –fix appendonly.aof
3.    同步频率:每秒记录一次,如果宕机该秒记可能失效
4.    Rewrite:bgrewriteaof 因为日志是追加方式,文件会越来越大,当超过了设置的阈值时,日志文件会压缩,保留仅可以恢复的日志

RDB和AOF对比 1.    节省磁盘空间 2恢复速度快

ROD缺点:
1.      数据太大时,比较消耗性能
2.    一段时间保存一次快照,宕机时最后一次可能没有保存

AOF优点:
1.备份机制更加稳健
2.可读的日志文件,通过aof恢复更加稳健,可以处理失误

AOF缺点:
1.比RDB更占磁盘
2.备份速度较慢
3.iii每次都同步日志,有性能压力

RDB和AOF哪个好
1.    官方推荐都启用
2.    对数据不敏感,单独用RDB
3.    不建议单独使用AOF
4.    若作为纯缓存使用,可以都不开启

十一、Redis事务:输入multi,输入的命令都会依次进入到队列中,但不会执行,直到输入exec,redis会将之前命令队列中的命令依次执行,通过discard可以放弃组队。
1. 主要作用:序列化操作,串联多个命令防止别的命令插队
2. 悲观锁:每次拿到数据的时候都会上锁,或者等待别人处理完再去拿锁,传统的关系型数据库里边很多用到了这种锁机制,比如行锁、表锁、读锁、写锁
3. 乐观锁:每次拿数据的时候总认为别人不会修改数据,所以不会上锁。但是更新的时候回去判断别人有没有更改数据,使用版本号机制。乐观锁适用于多读的应用类型,可以提高吞吐量。
4. Redis使用乐观锁:redis就是利用check-and-set机制实现事务

5.三大特性: 1.单独的隔离操作:事务中的所有命令都会序列化,按顺序执行。不会被其他客户端打断
2.没有隔离级别概念:队列中的命令没有提交之前不会被执行,事务外不能查看事务内的更新
3.不能保证原子性:跳过错误,依旧执行,没有回滚

十二、Redis订阅/发布
是进程中的一种消息通信模式,发送者pub发送消息,订阅者sub接收消息

十三、Redis主从复制
1.   是什么:主从复制就是主机数据更新后根据配置和策略,自动同步到备份机的master/slaver机制,master写为主,slave读为主
2.用处:
1. 读写分离,性能拓展。
2. 容灾快速恢复

3.  配置服务器(配从不配主):
1.    拷贝多个redis.conf文件
2.    开启daemonize yes
3.    Pid文件名字
4.    指定端口
5.    Log文件名字
6.    Dump.rdb名字
7.    Appendonly 关掉或者换名字

十四、Jedis
1.   所需jar包:

1.   common-pool-1.6jar包
2.   jedis-2.1



  1. 获取jedis对象:Jedis jedis = new Jedis(“ip” ,端口号);

十五、集群分布:
实现对redis的水平拓展,启动n’的redis节点,将整个数据分布在这n个节点中

配置conf文件:
1.    拷贝多个redis.conf文件
2.    开启daemonize yes
3.    Pid文件名字
4.    指定端口
5.    Log文件名字
6.    Dump.rdb名字
7.    Appendonly 关掉或者换名字

配置cluster文件:




    1. cluster-enable yes 打开集群模式

    2. cluster-config-file xxx.conf 设置生成的节点配置文件名

    3. cluster-node-timeout 15000设置节点失联时间,超多该时间(毫秒),集群自动进入主从切换




推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • MySQL笔记_MySQL笔记1|数据库17问17答
    本文由编程笔记#小编为大家整理,主要介绍了MySQL笔记1|数据库17问17答相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
author-avatar
shirliyap
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有