全部
常见问题
产品动态
精选推荐

redis简介、用途以及使用场景

管理 管理 编辑 删除

Redis 简介

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

一、为什么使用redis


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

二、优点


1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

3.原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

三、适用场景


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操作

3bef6202212241653085827.png

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

f0b94202212241653195217.png

String批量处理:

648e5202212241653283858.png

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

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

af80b202212241653463888.png

hash:键值对集合,类似map

63308202212241653542086.png

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

9b9d3202212241654035152.png

十、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设置节点失联时间,超多该时间(毫秒),集群自动进入主从切换

CRMEB-慕白寒窗雪 最后编辑于2022-12-24 16:54:07

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
回复从新到旧

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} 作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
{{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
882
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

CRMEB-慕白寒窗雪 作者
社区运营专员---高冷のBoy | 呆萌のGirl

回答

1102

发布

1750

经验

39820

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

快速安全登录

使用微信扫码登录

手机登录

{{codeText}}
{{isQrcode ? '手机登录' : '扫码登录'}}
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 开源下载 CRMEB官方论坛 帮助文档
返回顶部 返回顶部
CRMEB客服