Redis缓存数据库(一)
先导知识:Memcache
Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。
已经有了Memcache,为什么还要用Redis呢?
下面Memcache的缺点:
- 不支持数据持久化存储
- 不支持主从
- 不支持分片
而对比Redis数据库,以上三点都支持,所以要使用redis。
问题一:为什么redis能这么快?
Redis的访问速度可达 10万+QPS(query per second,每秒内查询次数)。
- 完全基于内存:绝大部分请求是纯粹的内存操作,不受限于硬盘读取速度,故而执行效率高
- 数据结构简单,是(key,value)形式,对数据的操作也简单
- 采用单线程也能处理高并发请求
- 相对于传统的阻塞I/O,Redis使用多路I/O复用模型,非阻塞I/O
- 具有原子性操作。
问题二:Redis采用的多路I/O复用函数?
多路I/O复用函数有:epoll、kqueue、evport、select 链接:多路I/O复用技术
- 因地制宜,有的系统只有select
- 优先选择时间复杂度为O(1)的函数作为底层实现
- 以时间复杂度为O(n)的select作为保底
- 基于reactor设计模式监听I/O事件
问题三:Redis的数据类型有哪些?(重点!!)
- string:最基本的数据类型,二进制安全,可以存储任何格式的数据(jpg图片,序列化的对象)
- hash:string元素组成的字典,适合用于存储对象
- list:列表,特点:先进先出、有序(按添加顺序)、可重复
- set:string元素组成的无序集合,通过hash实现,不允许重复
- sorted set:通过分数来为集合的成员进行从小到大的排序
- 用于计数的HyperLogLog
- 用于支持存储地理位置信息的Geo
Redis的底层数据类型基础:
1、简单动态字符串;2、链表;3、字典;4、跳跃表
5、整数集合;6、压缩列表;7、对象
Redis缓存数据库(一)的更多相关文章
- 快速搭建Redis缓存数据库
之前一篇随笔——Redis安装及主从配置已经详细的介绍过Redis的安装于配置.本文要讲的是如何在已经安装过Redis的机器上快速的创建出一个新的Redis缓存数据库. 一.环境介绍 1) Linux ...
- [技术博客] 用户验证码验证机制---redis缓存数据库的使用
目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...
- Django缓存机制以及使用redis缓存数据库
目录 Django 配置缓存机制 缓存系统工作原理 Django settings 中 默认cache 缓存配置 利用文件系统来缓存 使用Memcache来缓存: 使用Local-memory来缓存: ...
- NOSQL中的redis缓存数据库
NOSQL概述 什么是NOSQL? NoSql(NoSQL=Not Only SQL),意思为"不仅仅是SQL",是一个全新的数据库理念,泛指非关系型的数据库. 为什么需要NOSQ ...
- redis缓存数据库及Python操作redis
缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站, 特 ...
- 关于redis缓存数据库的一些思考
今晚无聊,躺在床上,在刷技术文章时,看见了一篇关于redis缓存的文章 写的蛮好,这也就引起了我对于redis思考! 不如往深了说 引起了我对于追求探索技术本质的一些思考 平时在网上刷到很多关于red ...
- NoSQL:redis缓存数据库
一 Redis介绍 Redis和Memcached类似,也属于key-value nosql 数据库 Redis官网redis.io, 当前最新稳定版4.0.1 和Memcached类似,它支持存储的 ...
- 性能超前,详解腾讯云新一代Redis缓存数据库
背景 当前内存数据库发展迅速,用户对于存储系统的要求也越来越高,为了满足各类业务场景的需要,腾讯云设计了新一代的内存数据库,不但保留了原来系统的高性能,高可用等特性,同时还兼容了当前流行的Redis原 ...
- redis缓存数据库
redis 介绍 redis是业界主流的key-value nosql 数据库之一.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set( ...
- 关于Redis缓存数据库
将数据存入缓存1.(会先从数据库查数据,数据库没有会从缓存中拿,没有则会从数据库拿.且加入缓存)@Cacheable(name="命名空间",key="#xxx^&quo ...
随机推荐
- Nginx:Nginx limit_req limit_conn限速
简介 Nginx是一个异步框架的Web服务器,也可以用作反向代理,负载均衡器和HTTP缓存,最常用的便是Web服务器.nginx对于预防一些攻击也是很有效的,例如CC攻击,爬虫,本文将介绍限制这些攻击 ...
- 题解 CF1294F 【Three Paths on a Tree】
\[ Preface \] 打比赛的时候先开了 F 题(雾 然后一眼看出 F 题结论,最后居然因为没有判重,交了三次才过. \[ Description \] 给出一棵无权树(可理解为边权为 \(1\ ...
- 初入机器学习,安装tensorflow包等问题总结
学习python,机器学习(maching-lerning).深度学习(deep-learning)等概念也是耳熟能详.我最近从新手开始学习maching-learning知识,不过课程偏向基本的理论 ...
- Apache-Tomcat-Ajp漏洞(CVE-2020-1938)漏洞复现
前言 Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互.由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器.此漏洞为文件包含漏洞,攻 ...
- geo常见需求
常见的地理位置相关需求有: 1.查找附近的人 2.显示两点距离 3.点是否在指定范围内(地理围栏) redis.MongoDB.mysql都已支持geo 几种geo方案对比 https://blog. ...
- 怎么用wait、notify巧妙的设计一个Future模式?
我们知道多线程可以实现同时执行多个任务(只是看起来是同时,其实是CPU的时间片切换特别快我们没感觉而已). 现在假设一个做饭的场景,你没有厨具也没有食材.你可以去网上买一个厨具,但是这段时间,你不需要 ...
- rysnc知识梳理
rsync语法: Local: rsync [OPTION...] SRC... [DEST] #<===本地传输数据 Access via remote shell: #<===借助通道 ...
- css中伪类和伪元素
伪类和伪元素时对那些我们不能通过class.id等选择元素的补充 伪类的操作对象是文档树中已有的元素(可以给已有元素加了一个类替代),而伪元素则创建了一个文档数外的元素(可以添加一个新元素替代) CS ...
- nginx启动报错nginx: [error] open() "/usr/local/etc/nginx/logs/nginx.pid" failed
问题:nginx启动的时候会报丢失pid的错误 nginx: [error] open() “/usr/local/var/run/nginx.pid” failed 解决方案: sudo nginx ...
- C++ char to string 方法
1. 使用string()构造函数方法 //method 1: the constructor of string() char c = 'F'; , c); cout << s ; 2. ...