redis系列之redis是什么

一、简介


REmote DIctionary Server(Redis),redis是一个基于内存的单机key/value系统,类似memcached,但支持value为多种形式,包括:字符串(string)、链表(list)、集合(set)、有序集合(sorted set)和hash table

二、特点


1 优点

与memcache和MySQL等类似产品比较,Redis有以下几个优点:

(1) 非常丰富的数据结构,且这些数据结构的常见操作均是原子性的;

(2) 高速读写。Memcached提供了CAS命令,可以保证多个并发访问操作同一份数据的一致性问题。 Redis没有提供CAS命令,不过Redis提供了事务的功能,可以保证一串命令的原子性,中间不会被任何操作打断。MYSQL使用了锁,而memcache未使用锁,进而效率极高。总之,Redis用自己实现的事件分离器,代码量很短,没有CAS,没有lock,因而效率非常高。关于memcache与redis的比较,可参考这篇文章:《Redis与Memcached的比较》[1]

2 缺点

(1) 持久化。 Redis直接将数据存储到内存中,可通过两种方式持久化:定时快照(snapshot)和基于语句的追加(Append Only File,aof)。Snapshot的方法是指每隔一段时间将整个数据库的数据写到磁盘上,很明显,每次均是写全部数据,代价非常高;而aof方法只追踪变化的数据,这类似于mysql的binlog方法,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢。

(2) 耗内存。尽管Redis对一些数据结构采用了压缩算法存储,但占用内存量还是过高。

[1] Redis与Memcached的比较http://tech.it168.com/a2011/0818/1234/000001234403_1.shtml

redis系列之redis是什么,码迷,mamicode.com

时间: 2025-01-01 05:26:52

redis系列之redis是什么的相关文章

Redis系列一 Redis安装

Redis系列一    Redis安装 1.安装所使用的操作系统为Ubuntu16.04 Redis版本为3.2.9 软件一般下载存放目录为/opt,以下命令操作目录均为/opt [email protected]:/opt# wget http://download.redis.io/releases/redis-3.2.9.tar.gz [email protected]:/opt# tar -zxvf redis-3.2.9.tar.gz [email protected]:/opt/re

10.【Redis系列】Redis的高级应用-GeoHash

原文:10.[Redis系列]Redis的高级应用-GeoHash Redis在3.2版本增加了GEO模板,意味着通过redis可以做附近的人,附近的门店,附近的商场这样的功能. 用数据库来算附近的人 地图元素的位置数据使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负.比如掘金办公室在望京 SOHO,它的经纬度坐标是 (116.48105,39.996794),都是正数

1.【Redis系列】redis是可以做什么?

原文:1.[Redis系列]redis是可以做什么? Redis是互联网技术领域使用最为广泛的存储中间件.它以其超高的性能.完美的文档.简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评.国内外很多大型网站都在使用Redis,比如Twitter.Youporn.Github.腾讯.阿里.京东.华为等等,很多小型公司也在应用. Redis可以做什么呢 Redis的应用非常广泛,我们梳理下redis可以用在哪些方面. 1.记录帖子的点赞数.评论数和点击数 2.记录用户帖子ID的列表,便于快速

5.【Redis系列】Redis的高级应用-位图

原文:5.[Redis系列]Redis的高级应用-位图 假设一个应用场景:我们需要记录用户一年的签到记录,签到了是1,没签是0,记录365天,当用户上亿后,存储空间是惊人的. 为了解决这个问题,redis提供了位图的数据结构.这样每天的签到记录只占据一个位,365天就是365个位,46个字节完全可以容纳下. 位图不是特殊的数据结构,它的内容就是普通的字符串,也就是byte数组,我们可以用set/get方法来设置和获取位图的内容,也可以使用位图操作getbit和setbit将byte数组看成位数组

7.【Redis系列】Redis的高级应用-布隆过滤器

原文:7.[Redis系列]Redis的高级应用-布隆过滤器 拿今日头条来说,它会不停的给我们推荐新的新闻,每次推荐都要去重,过滤掉我们之前看过的内容,今日头条如何做到去重呢,我们上面的HyperLogLog虽然能去重,但是没有办法确认这个新闻有没有被浏览 过,没有pfcontains的方法.有没有更好的解决方案呢? Redis为我们准备了布隆过滤器,是专门用来解决这种去重问题的,它在起去重功能的同时,空间上还可以节约90%,只是稍微有一定的误判率. 什么是布隆过滤器 布隆过滤器可以理解为稍微不

9.【Redis系列】Redis的高级应用-漏斗限流

原文:9.[Redis系列]Redis的高级应用-漏斗限流 漏斗限流是最常用的限流方法之一,顾名思义,这个算法的灵感源于漏斗(funnel)的结构. image.png 漏斗的容量是有限的,如果将漏嘴堵住,然后一直往里面灌水,它就会变满,直至再也装不进去.如果将漏嘴放开,水就会往下流,流走一部分之后,就又可以继续往里面灌水.如果漏嘴流水的速率大于灌水的速率,那么漏斗永远都装不满.如果漏嘴流水速率小于灌水的速率,那么一旦漏斗满了,灌水就需要暂停并等待漏斗腾空. 所以,漏斗的剩余空间就代表着当前行为

8.【Redis系列】Redis的高级应用-简单限流

原文:8.[Redis系列]Redis的高级应用-简单限流 限流在分布式系统中是一个经常被提到的话题,如果当前系统的能力,不足以承受那么大的访问量的时候,那么我们就要阻止外来请求对系统继续施压 实现简单限流 首先我们来看一个常见的简单限流策略,系统要限制每个用户在一定时间内的某个行为只能操作N次,如何是用redis的数据结构来实现这个限流的功能呢. 解决方案 这个限流需求中存在一个滑动时间窗口,想想 zset 数据结构的 score 值,是不是可以通过 score 来圈出这个时间窗口来.而且我们

6.【Redis系列】Redis的高级应用-HyperLogLog

原文:6.[Redis系列]Redis的高级应用-HyperLogLog 老规矩还是先假设一个场景:比如京东的商品详情页,如果需要你来统计每天的UV数据,你会如何实现? 如果是PV就好办了,直接给每个网页增加一个计时器,每个网页增加一个日期,这样一进来incrby一次,最终可以计算出每天的统计所有的PV数据. 但是UV就不一样了,每一个用户进来多次每天也只能算一个UV.无论是登录用户还是未登录用户,都需要给一个唯一的ID来标识. 有可能你已经想到了通过set集合去重的功能,为每一个页面创建一个s

4.【Redis系列】Redis的高级应用-延时队列

原文:4.[Redis系列]Redis的高级应用-延时队列 我们习惯于用rabbitmq和kafka作为消息中间件,来给应用之间增加异步的能力.但是使用过的同学都知道,使用专业的消息中间件使用起来非常复杂,我们实现一个简单的功能都需要大量的操作.有了redis,可以让我解脱出来,使用redis可以非常轻松的搞定,Redis的消息队列不是专业的消息中间件,没有非常高级的特性,如果对消息的可靠性有极高的追求,那么redis的消息中间件可能不适合. 异步消息队列 Redis的列表可以用来处理消息队列,