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 设计模式>学习中 分类 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) ...
- sql server 查询分析器中表名无效,有红线,其实是这张表的
ctrl+shift+R 就OK了,就是刷新本地缓存.
- MySQL Database on Azure服务在中国正式商用
基于由世纪互联运营的Windows Azure平台,MySQL Database on Azure服务助力中国用户实现数据库在云端的快速部署.推进用户的创新开发 2015年9月10日,北京——微软中国 ...
- Python 词频统计
利用Python做一个词频统计 GitHub地址:FightingBob [Give me a star , thanks.] 词频统计 对纯英语的文本文件[Eg: 瓦尔登湖(英文版).txt]的英文 ...
- 延期年金(deferred annuity)
含义:推迟m个时期后才开始付款的年金. 延期年金现值为 二.永续年金(Perpetuity) 永续年金:无限期支付下去的年金. 为期末付永续年金(perpetuity-immediate)的现值 表示 ...
- [BZOJ 1972][Sdoi2010]猪国杀
1972: [Sdoi2010]猪国杀 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 364 Solved: 204[Submit][Status][D ...
- Android Volley源码分析及扩展
转载请标明出处: http://www.cnblogs.com/why168888/p/6681232.html 本文出自:[Edwin博客园] Volley 介绍 Android系统中主要提供了两种 ...
- java String 常用方法集合
String a = "abc";String b = "abc";a==b ;//返回true,因为a,b指向的是同一个地址 String a = new S ...
- Eclipse中的BuildPath详解【转载】
什么是Build Path? Build Path是指定Java工程所包含的资源属性集合. 在一个成熟的Java工程中,不仅仅有自己编写的源代码,还需要引用系统运行库(JRE).第三方的功能扩展库.工 ...
- iOS离屏渲染的解释:渲染与cpu、gpu
重开一个环境(内存.资源.上下文)来完成(部分)图片的绘制 指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作 意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作. ...