1 什么是Redis

Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列。

Redis的特点:

  • Redis存在于内存,使用硬盘作为持久化;每秒十万读写。
  • 具有丰富的数据结构,字符串、哈希表、列表、集合、有序集合;提供交集、并集、差集等操作。
  • 设置TTL存活时间,到期自动删除。
  • Redis单线程、Memcached多线程;对于一般的应用场景,单线程也足够使用,优势还是在于多数据类型、持久化。
  • 可以将数据复制到任意数量的从服务器。

2 Redis中的数据结构

字符串

  • SET keyname value 设置键值keyname的值是value
  • KEYS * 获取所有的键值
  • GET keyname 获取keyname的值
  • EXISTS keyname 判断是否存在键值keyname
  • DEL keyname 删除键值keyname
  • TYPE keyname 判断keyname的类型(string字符串,hash哈希表,list列表,set集合,zset有序集合)

哈希表

  • HSET keyname key value 添加一个哈希属性和值
  • HGET keyname key 获取值
  • HKEYS keyname 获取全部的key值
  • HVALS keyname 获取全部的value值
  • HGETALL keyname 获取所有的值

列表

通过双向链表实现,头尾操作均为O(1),获取指定元素比较慢。

  • LPUSH keyname value1或者LPUSH keyname value1 value2 在左边插入
  • RPUSH keyname value2 在右边插入
  • LRANGE keyname 0 -1 查询所有的元素
  • LPOP keyname
  • RPOP keyname

集合

元素唯一,但是没有顺序。使用值为空的哈希表实现,操作都是O(1)。

  • SADD keyname value1 value2 添加值
  • SREM keyname value1 删除
  • SMEMBERS keyname查询所有元素

有序集合

使用哈希和跳跃表实现,中间速度也很快。

  • ZADD keyname key value 添加
  • ZRANGE keyname start end 获取指定范围的元素

与列表的比较:

相同:

  • 都是有序的
  • 都可以获取某一范围的元素

不同:

  • 列表通过双向链表实现,两端数据存取极快,中间缓慢
  • 有序集合通过哈希和跳跃表实现,中间速度也很快,为O(log(N))
  • 列表不能简单地调整某个元素的位置,有序集合可以
  • 有序集合比列表更好费内存

3 Redis持久化

Redis提供了两种持久化方式:1 RDB快照方式 2 AOF方式

RDB方式:

满足一定条件时,会创建一个子进程,复制当前的数据,把数据写入到硬盘中某个文件,写入完成后替换原来的存储文件。数据一般存储在dump.rdb中。UNIX系统中支持写时复制,即刚开始会执行持久化写入磁盘的操作,如果此时有其他的数据发生改变,就复制一份数据执行。

除了这种自动的快照方式,还支持命令方式持久化:

  • SAVE:通过阻塞的方式,用父进程来持久化,此时无法执行其他的请求。
  • BGSAVE:通过fork子进程的方式,持久化。

AOF方式:

每次操作都会记录命令,这样会造成某些命令的冗余,比如添加了一个属性,再删除,那么这两个操作都是冗余的。redis提供了一些优化,所以可以避免这些冗余信息。命令记录在appendonly.aof中

4 Redis的消息队列

Redis用于消息队列,通常有两种种使用方式:

LIST:基于列表的方式,所有的消费者数据加起来是列表中的所有数据.

发布/订阅:每个消费者订阅独立的channel,每个数据都是独立的。

Redis初级介绍的更多相关文章

  1. [转] Redis系统性介绍

    Redis系统性介绍 http://blog.nosqlfan.com/html/3139.html?ref=rediszt 虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了 ...

  2. Redis安装介绍

    Redis安装介绍 一.Linux版本及配置 1.  Linux版本:Red Hat Enterprise Linux 6虚拟机 2.  配置: 内存:1G:CPU:1核:硬盘:20G 二.Redis ...

  3. Redis全面介绍

    最近重新认识了一下Redis,借着这个机会,也整理一篇算是比较详尽和全面的文章吧.   缓存 缓存就是数据交换的缓冲区(称作Cache)——摘自百度百科.无论是在计算机硬件体系结构还是软件体系结构中, ...

  4. NoSQL数据库之Redis数据库:Redis的介绍与安装部署

     NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...

  5. 4 Redis 配置文件介绍

    2016-12-22 14:28:39 该系列文章链接NoSQL 数据库简介Redis的安装及及一些杂项基础知识Redis 的常用五大数据类型(key,string,hash,list,set,zse ...

  6. 第五章· Redis主从复制介绍

    一.Redis主从复制 二.Redis主从复制工作机制 一.Redis主从复制 Redis复制功能简单介绍 1)使用异步复制.2)一个主服务器可以有多个从服务器.3)从服务器也可以有自己的从服务器.4 ...

  7. redis cluster介绍

    讲解分布式数据存储的核心算法,数据分布的算法 hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法 一.概述 1.我们的m ...

  8. Python 基于python操纵redis入门介绍

    基于python操纵redis入门介绍 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3.3.2 基于Python操作R ...

  9. Python redis 简单介绍

    Python redis 简单介绍 1.安装 终端输入: pip(or)pip3.6 install redis 安装成功 2.哈哈,发现我并没有redis服务可以访问,所以到这里,在本机安装了red ...

随机推荐

  1. 【MongoDB初识】-条件操作符

    1.条件>,<,>=,<=在MongoDB中的写法 >:$gt,<:$lt,>=:$gte,<=:$lte,<>:$ne 具体使用方法: d ...

  2. XmlRpc.net 出参字符串还原为结构体

    上一篇随笔写的是入参结构体转字符串,现在需要把保存到服务器的字符串还原为结构体,这里记录一下操作步骤: 1. 格式化字符串. XmlRpcDeserializer 支持反序列化<struct&g ...

  3. IE6图片元素img下高度超出出现多余空白

    将图片转换为块级元素:display:block; 设置图片的垂直对齐方式:vertical-align属性为top,text-top,bottom,text-bottom 设置父元素的字体大小为0p ...

  4. js截取中英文字符串、标点符号无乱码示例解读

    <script> function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; ...

  5. uoj98未来程序改 纯暴力不要想了

    暴力模拟A了,数据还是良(shui)心(shui)的 90分的地方卡了半天最后发现一个局部变量被我手抖写到全局去了,,, 心碎*∞ 没什么好解释的,其实只要写完表达式求值(带函数和变量的),然后处理一 ...

  6. Files 的值“<<<<<<< .mine”无效。路径中具有非法字符

    解决冲突,告诉SVN这个问题已解决(Resolved). 一般更简单些:在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有'& ...

  7. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  8. Python 爬虫6——Scrapy的安装和使用

    前面我们简述了使用Python自带的urllib和urllib2库完成的一下爬取网页数据的操作,但其实能完成的功能都很简单,假如要进行复制的数据匹配和高效的操作,可以引入第三方的框架,例如Scrapy ...

  9. (转)小小科学家的归来 by 王珢

    小小科学家的归来 by 王垠很多人来信关心我的现状,所以在写别的技术性文章之前,先说说我现在的情况吧.虽然自己追求的东西和经历都比较不同寻常,但是也许可以给奋斗中的人们一些慰藉和鼓励. 首先是超级好消 ...

  10. 【Beta】Daily Scrum Meeting第六次

    1.任务进度 学号 已完成 接下去要做 502 无 发布任务到服务器 509 给所有api添加注释 将各个api改为面向对象 517 无 删除任务的控件及逻辑 530 下拉刷新控件 添加及修改职工信息 ...