redis必会
1.NosqL
非关系型数据库,里面包含Redis和MondoDB
2.为什么会用到关系型数据库?因为当数据量太多,访问人数过多的时候,在访问关系型数据库时会到硬盘里进行读写过多
这样就会导致访问速度很慢,服务器压力很大。
3.这个时候,我们就可以使用非关系型数据库,它相当于一个缓存区,
把一些经常用的数据放到缓存区里,当用户使用时直接到缓存区中去读取,缓存区找不到再去Mysql中拿。
比如12306首页、天猫0点抢购,会把一本分数据放到缓存区里
4.
列表[] ----->支持增删改查,数据类型多样--顺序表
元组() ----->不支持增删改查,只能读
集合{} ----->支持增删改查,元素不重复
字典{} ------>以键值对存储,支持增删改查
面试题:对列表进行去重,可以先将其先转换成集合,在转换回去
a= [1,1,2,2,3,3,]
b = set(a)
a = list(b)
5.redis 是以健命令来进行增删改查的。就根据键来找值,键值对的NoSQL,即一个健对应一个值,键的类型永远都是字符串,
这个值可以是字符串哈希列表等数据类型。
1)建命令
* KEYS+正则 查找当下存在的健
* EXISTS KEY... 判断建是否存在,如果存在返回1,不存在返回0
* TYPE KEY 查看健对应VALUE的类型
* DEL KEY 会将该建以及对应的值都删除
* expire KEY +seconds 设置时间
* TTL KEY 查看建存在的时间
2)String
* 最基本的数据类型,最大存储521MB,可以存储二进制的任何数据,图片、数字、系列化对象
* SET KEY value 设置一个键值对
* SETES KEY seconds value 设置键值及其过期时间,以s为单位
* MSET key value key value 设置多个键值
* GET key 通过健获取值
* MGET key 获取多个值
* append key value 追加一个值
* strlen key 查看长度
3)Hash
* 用于存储对象,对象的格式是键值对(可以理解为存进去一个字典)
* HSET key field value 设置单个属性
* HMSET key field value key field value 设置多个
* HGET key field 获取 该建的属性对应的值 获取多个HMGET
* HGETALL KEY 获取该健存储的所有属性所有值。
4)list
* 用与存储一个列表,列表中元素是String,按照插入顺序排序
* LPUSH key value value 在该健头部添加
* RPUSH key value value 在改建尾部添加
* LINSERT KEY before|after pivot value 在一个元素的左面或者右边添加一个元素,pivot表示索引
* LPOP KEY 从左侧拿并删除
* RPOP KEY 从右侧拿并删除
* lrange key start stop 从列表中按照索引值遍历出响应元素 并不删除
* Ltrim key field 裁剪
5)set 无序集合、与列表类似、元素string类型、元素唯一不重复
* SADD KEY member member 添加元素
* Smembers key 获取元素
* SCARD KEY 返回元素的个数
* SINTER KEY1 KEY2 .. 求多个集合的交集
* SDIFF KEY1 KEY2.. 求多个集合的差集
* SUNION KEY1 KEY2 .. 求多个集合的合集
* SISMEMBER key member 判断一个元素是否在集合中
5)zset ——> sorted set 与set类似,但是是有序,通过score表示权重,根据权重来将元素排序
* ZADD KEY score member score1 member1...
* zrange key start stop 获取有序集合的元素
* ZCARD 返回元素个数
* ZSCORE KEY MEMBER 查看该元素的权重
6.发布订阅设计模式
设计模式:redis支持消息的发布与订阅,不需要进行主动请求,自动进行信息更新。
客户端订阅服务端,服务端有新消息,不需要客户端请求,直接发过去,长连接。
7.利用redis搭建主从集群,可以实现备份功能
只要改配置文件即可,更改配置文件bind
将一个bind更改为自己ip作为主
另一加slave ip 作为从,可以将主的数据存储备份
特点:
master/slave 角色
master/slave 数据相同
降低 master 读压力在转交从库
问题:
无法保证高可用
没有解决 master 写的压力
8.redis更容易搭建集群,redis可以登陆完善
9.使用过Redis做异步队列么,你是怎么用的?有什么缺点?
一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。
缺点:
在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。
能不能生产一次消费多次呢?----发布订阅模式
使用pub/sub主题订阅者模式,可以实现1:N的消息队列。
10.使用过Redis分布式锁么,它是怎么实现的?
先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。
如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?
set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的!
redis必会的更多相关文章
- 新人入坑Redis必会的吐血总结
新人入坑Redis必会的吐血总结 一.什么是Redis Redis是一个使用C语言开发的开源的高性能的key-value存储系统,我们可以把它近似理解为Java Map.简单来讲,Redis是一种NO ...
- redis必知会
Redis 是单进程单线程的? Redis 是单进程单线程的,redis 利用队列技术将并发访问变为串行访问,消 除了传统数据库串行控制的开销. Redis 的持久化机制是什么?各自的优缺点? Red ...
- Redis必知必会系列
1.常用命令 https://www.cnblogs.com/huozhonghun/p/11636053.html 2.Redis是什么 Redis 是 C 语言开发的一个开源的(遵从 BSD 协议 ...
- 阿里Java面经大全(整合版)
本文里的面经内容全部来源于牛客网,作为秋招备战复习与查缺补漏时使用.里面部分面经有我的注释和想法,以及部分解答,不一定正确,大家可以查询补充. 阿里巴巴,三面,java实习 昨天晚上11点打电话来,问 ...
- Redis-01-基础
基本概念 1 基本概念 redis是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库(非关系性数据库) redis运维的责任 1.保证服务不挂 2.备份数据 ...
- 互联网公司面试必问的Redis题目
Redis是一个非常火的非关系型数据库,火到什么程度呢?只要是一个互联网公司都会使用到.Redis相关的问题可以说是面试必问的,下面我从个人当面试官的经验,总结几个必须要掌握的知识点. 介绍:Redi ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- (转)面试前必知Redis面试题—缓存雪崩+穿透+缓存与数据库双写一致问题
背景:redis问题在面试过程中经常被问到,对于常见问题一定不能放过. 面试前必知Redis面试题—缓存雪崩+穿透+缓存与数据库双写一致问题 一.缓存雪崩 1.1什么是缓存雪崩? 如果缓存数据设置的过 ...
- 跟我一起学Redis之Redis持久化必知必会
前言 Redis是出了名的速度快,那是因为在内存中进行数据存储和操作:如果仅仅是在内存中进行数据存储,那就会导致以下问题: 数据随进程退出而消失:当服务器断电或Redis Server进程退出时,内存 ...
随机推荐
- java 策略模式
<Head First 设计模式>学习中 设计原则 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 针对接口编程,而不是针对实现编程 多用组合少用继承 ...
- 三层构架 和 MVC 是什么?
作者:肖继潮链接:https://www.zhihu.com/question/24291079/answer/27339010著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 企 ...
- java笔记--BigDecimal的使用
BigDecimal的运用 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877231.html "谢谢-- BigDec ...
- mysql 的增删改查
数据库的基本流程就是先看你的数据库中的库都是哪些:show databases; 然后再进入相应的库进行操作 : use+进入的库/表 切换路径 查看这个库内的所有的表: show tabales ...
- [翻译] MAThemeKit
MAThemeKit https://github.com/mamaral/MAThemeKit MAThemeKit provides iOS developers the ability to c ...
- POP动画[2]
POP动画[2] 1:定制控制器间的转场动画. 源码有点多-_-!! // // RootViewController.h // Animation // // Copyright (c) 2014年 ...
- MapReduce Design Patterns(chapter 2 (part 3))(四)
Inverted Index Summarizations Pattern Description 反向索引模式在MapReduce分析中经常作为一个例子.我们将会讨论我们要创建的term跟标识符之间 ...
- rsync 服务器配置过程
rsync的原理和相关算法不赘述,资料很多 1.准备两台机器并确保都已经安装rsync a机器:192.168.1.150 ,用作客户端测试 b机器:192.168.1.151用作server端 先介 ...
- markdown编辑器安装
打算使用MarkDown了,打算整理自己的知识了. 多年以前,喜欢将自己看到好东西,转载在博客.或者将遇到过的问题以及解决方案,记录在博客.06毕业后为了生活折腾,Tom网上的博客无暇东顾,等稳定闲下 ...
- Requests中文乱码解决方案
分析: r = requests.get(“http://www.baidu.com“) **r.text返回的是Unicode型的数据. 使用r.content返回的是bytes型的数据. 也就是说 ...