先导知识:Memcache

Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。

已经有了Memcache,为什么还要用Redis呢?

下面Memcache的缺点:

  • 不支持数据持久化存储
  • 不支持主从
  • 不支持分片

而对比Redis数据库,以上三点都支持,所以要使用redis。

问题一:为什么redis能这么快?

  Redis的访问速度可达 10万+QPS(query per second,每秒内查询次数)。

  1. 完全基于内存:绝大部分请求是纯粹的内存操作,不受限于硬盘读取速度,故而执行效率高
  2. 数据结构简单,是(key,value)形式,对数据的操作也简单
  3. 采用单线程也能处理高并发请求
  4. 相对于传统的阻塞I/O,Redis使用多路I/O复用模型,非阻塞I/O
  5. 具有原子性操作。
问题二:Redis采用的多路I/O复用函数?

  多路I/O复用函数有:epoll、kqueue、evport、select    链接:多路I/O复用技术

  1. 因地制宜,有的系统只有select
  2. 优先选择时间复杂度为O(1)的函数作为底层实现
  3. 以时间复杂度为O(n)的select作为保底
  4. 基于reactor设计模式监听I/O事件
问题三:Redis的数据类型有哪些?(重点!!)
  1. string:最基本的数据类型,二进制安全,可以存储任何格式的数据(jpg图片,序列化的对象)
  2. hash:string元素组成的字典,适合用于存储对象
  3. list:列表,特点:先进先出、有序(按添加顺序)、可重复
  4. set:string元素组成的无序集合,通过hash实现,不允许重复
  5. sorted set:通过分数来为集合的成员进行从小到大的排序
  6. 用于计数的HyperLogLog
  7. 用于支持存储地理位置信息的Geo
Redis的底层数据类型基础:

  1、简单动态字符串;2、链表;3、字典;4、跳跃表

  5、整数集合;6、压缩列表;7、对象

Redis缓存数据库(一)的更多相关文章

  1. 快速搭建Redis缓存数据库

    之前一篇随笔——Redis安装及主从配置已经详细的介绍过Redis的安装于配置.本文要讲的是如何在已经安装过Redis的机器上快速的创建出一个新的Redis缓存数据库. 一.环境介绍 1) Linux ...

  2. [技术博客] 用户验证码验证机制---redis缓存数据库的使用

    目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...

  3. Django缓存机制以及使用redis缓存数据库

    目录 Django 配置缓存机制 缓存系统工作原理 Django settings 中 默认cache 缓存配置 利用文件系统来缓存 使用Memcache来缓存: 使用Local-memory来缓存: ...

  4. NOSQL中的redis缓存数据库

    NOSQL概述 什么是NOSQL? NoSql(NoSQL=Not Only SQL),意思为"不仅仅是SQL",是一个全新的数据库理念,泛指非关系型的数据库. 为什么需要NOSQ ...

  5. redis缓存数据库及Python操作redis

    缓存数据库介绍  NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站, 特 ...

  6. 关于redis缓存数据库的一些思考

    今晚无聊,躺在床上,在刷技术文章时,看见了一篇关于redis缓存的文章 写的蛮好,这也就引起了我对于redis思考! 不如往深了说 引起了我对于追求探索技术本质的一些思考 平时在网上刷到很多关于red ...

  7. NoSQL:redis缓存数据库

    一 Redis介绍 Redis和Memcached类似,也属于key-value nosql 数据库 Redis官网redis.io, 当前最新稳定版4.0.1 和Memcached类似,它支持存储的 ...

  8. 性能超前,详解腾讯云新一代Redis缓存数据库

    背景 当前内存数据库发展迅速,用户对于存储系统的要求也越来越高,为了满足各类业务场景的需要,腾讯云设计了新一代的内存数据库,不但保留了原来系统的高性能,高可用等特性,同时还兼容了当前流行的Redis原 ...

  9. redis缓存数据库

    redis 介绍 redis是业界主流的key-value nosql 数据库之一.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set( ...

  10. 关于Redis缓存数据库

    将数据存入缓存1.(会先从数据库查数据,数据库没有会从缓存中拿,没有则会从数据库拿.且加入缓存)@Cacheable(name="命名空间",key="#xxx^&quo ...

随机推荐

  1. Nginx:Nginx limit_req limit_conn限速

    简介 Nginx是一个异步框架的Web服务器,也可以用作反向代理,负载均衡器和HTTP缓存,最常用的便是Web服务器.nginx对于预防一些攻击也是很有效的,例如CC攻击,爬虫,本文将介绍限制这些攻击 ...

  2. 题解 CF1294F 【Three Paths on a Tree】

    \[ Preface \] 打比赛的时候先开了 F 题(雾 然后一眼看出 F 题结论,最后居然因为没有判重,交了三次才过. \[ Description \] 给出一棵无权树(可理解为边权为 \(1\ ...

  3. 初入机器学习,安装tensorflow包等问题总结

    学习python,机器学习(maching-lerning).深度学习(deep-learning)等概念也是耳熟能详.我最近从新手开始学习maching-learning知识,不过课程偏向基本的理论 ...

  4. Apache-Tomcat-Ajp漏洞(CVE-2020-1938)漏洞复现

    前言 Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互.由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器.此漏洞为文件包含漏洞,攻 ...

  5. geo常见需求

    常见的地理位置相关需求有: 1.查找附近的人 2.显示两点距离 3.点是否在指定范围内(地理围栏) redis.MongoDB.mysql都已支持geo 几种geo方案对比 https://blog. ...

  6. 怎么用wait、notify巧妙的设计一个Future模式?

    我们知道多线程可以实现同时执行多个任务(只是看起来是同时,其实是CPU的时间片切换特别快我们没感觉而已). 现在假设一个做饭的场景,你没有厨具也没有食材.你可以去网上买一个厨具,但是这段时间,你不需要 ...

  7. rysnc知识梳理

    rsync语法: Local: rsync [OPTION...] SRC... [DEST] #<===本地传输数据 Access via remote shell: #<===借助通道 ...

  8. css中伪类和伪元素

    伪类和伪元素时对那些我们不能通过class.id等选择元素的补充 伪类的操作对象是文档树中已有的元素(可以给已有元素加了一个类替代),而伪元素则创建了一个文档数外的元素(可以添加一个新元素替代) CS ...

  9. 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 ...

  10. C++ char to string 方法

    1. 使用string()构造函数方法 //method 1: the constructor of string() char c = 'F'; , c); cout << s ; 2. ...