`
simo_lee
  • 浏览: 12178 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Redis快速入门:初识Redis

 
阅读更多
        今天给大家介绍Redis的入门知识。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
        1、数据类型
  作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:
  ●Lists (列表)
  ●Sets (集合)
  ●Sorted sets (有序集合)
  ●Hashes (哈希表)
  键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。
  2、持久化
  通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。
  3、主从同步
  Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。
  4、性能
  相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间有显著的性能差异。
  5、提供API的语言
  ●C
  ●C++
  ●C#
  ●Clojure
  ●Common Lisp
  ●Erlang
  ●Haskell
  ●Java
  ●Javascript
  ●Lua
  ●Objective-C
  ●Perl
  ●PHP
  ●Python
  ●Ruby
  ●Scala
  ●Go
  ●Tcl
        6、适用场合
  毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。
  下面是Redis适用的一些场景:
比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取。
  使用LPUSH latest.comments命令,向list集合中插入数据
  插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
  然后我们在客户端获取某一页评论时可以用下面的逻辑

FUNCTION get_latest_comments(start,num_items):
    id_list = redis.lrange("latest.comments",start,start+num_items-1)
    IF id_list.length < num_items
        id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
    END
    RETURN id_list
END

       如果你还有不同的筛选维度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的。
  (2)、排行榜应用,取TOP N操作
  这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。
  (3)、需要精准设定过期时间的应用
  比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis中的过期数据,你完全可以把Redis里这个过期时间当成是对数据库中数据的索引,用Redis来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。
  (4)、计数器应用
  Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命令来构建计数器系统。
  (5)、Uniq操作,获取某段时间所有数据排重值
  这个使用Redis的set数据结构最合适了,只需要不断地将数据往set中扔就行了,set意为集合,所以会自动排重。
  (6)、实时系统,反垃圾系统
  通过上面说到的set功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。没有做不到,只有想不到。
  (7)、Pub/Sub构建实时消息系统
  Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子。
  (8)、构建队列系统
  使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。
  (9)、缓存
  这个不必说了,性能优于Memcached,数据结构更多样化。

分享到:
评论

相关推荐

    Redis从入门到高可用 高清

    Redis是当前最火的非关系型数据库,此教程从最初的了解redis到深入的探索,更好的了解redis和学习redis.教程如:初识redis、redis特性、持久化、集群、整合Spring等等。

    第9章 初识Redis Cluster.rar

    一站式学习Redis 从入门到高可用分布式实践(九) 包含Redis基础,使用经验介绍、Java,Python客户端示范、Redis使用规范,由浅入深讲解并伴有企业中Redis开发的相关项目以及大规模Redis的实战经验,是开发和运维...

    codersm#note#Redis入门系列一初识Redis(todo)1

    1、纯内存访问,Redis将_x0008_所有数据放在内存中,内存_x0008_响应时长大约为100纳秒,这是Redis_x0008_达到每秒万级别访问的重要基

    2019年 Redis从入门到高可用 分布式实战教程

    Redis从入门到高可用 分布式实战教程,共140多节课程、 掌握redis主从、哨兵、集群 ,参数调优 目录: 9-9 原生安装-1.准备节点.mp4 9-8 原生安装.mp4 9-7 基本架构.mp4 9-6 虚拟槽哈希分布.mp4 9-5 一致性...

    Redis从入门到高可用分布式

    第1章 Redis初识 第2章 API的理解和使用 第3章 Redis客户端的使用 第4章 Redis其他功能 ...第9章 初识Redis Cluster 第10章 深入Redis Cluster 第11章 缓存设计与优化 第12章 Redis云平台CacheCloud 第13章 课程总结

    Redis从入门到高可用视频.zip

    目录网盘文件永久链接 第1章 Redis初识 第2章 API的理解和使用 第3章 Redis客户端的使用 ...第9章 初识Redis Cluster 第10章 深入Redis Cluster 第11章 缓存设计与优化 第12章 Redis云平台CacheCloud 第13章 课程总结

    1-2.Redis初识-谁在使用redis

    redis入门视频教程,包含redis sentinel、redis cluster等等

    Redis实战_201512.pdf

    第1章 初识Redis 第2章 使用Redis构建Web应用 第二部分 核心概念 第3章 Redis命令 第4章 数据安全与性能保障 第5章 使用Redis构建支持程序 第6章 使用Redis构建应用程序组件 第7章 基于搜索的应用程序 第8章 构建...

    第1章 Redis初识.rar

    一站式学习Redis 从入门到高可用分布式实践(一) 包含Redis基础,使用经验介绍、Java,Python客户端示范、Redis使用规范,由浅入深讲解并伴有企业中Redis开发的相关项目以及大规模Redis的实战经验,是开发和运维...

    Redis实战 ] 约西亚 L.卡尔森(Josiah,L.,Carlson) 著;黄健宏 译

    第1章 初识Redis 2 1.1 Redis简介 3 1.1.1 Redis与其他数据库和软件的对比 3 1.1.2 附加特性 4 1.1.3 使用Redis的理由 5 1.2 Redis数据结构简介 6 1.2.1 Redis中的字符串 7 1.2.2 Redis...

    《Redis实战》

    1.3 初识Redis ........................................................................................................................ 13 1.3.1 数据类型 ..................................................

    nosql 入门教程

    2.2.2 初识Thrift 33 2.3 小结 34 第3章 NoSQL接口与交互 36 3.1 没了SQL还剩什么 36 3.1.1 存储和访问数据 37 3.1.2 MongoDB数据存储与访问 37 3.1.3 MongoDB数据查询 41 3.1.4 Redis数据存储与访问 43 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    word源码java-hadoop-v1:hadoop入门

    初识hadoop 分布式文件系统HDFS 分布式资源调度YARN 分布式计算框架MapReduce Hadoop项目实战 数据仓库Hive Hive项目实战 Hadoop分布式集群搭建 大数据概述 商品推荐 预言家 大数据4V特征 1、数据量Volume 2、多样性...

    SpringAll_wuyouzhuguli.tar.gz

    Spring Security OAuth2入门 Spring Security OAuth2自定义Token获取方式 Spring Security OAuth2自定义令牌配置 Spring Security OAuth2单点登录 四、Spring Cloud教程 初识Spring Cloud与微服务 Spring Cloud ...

    java查看函数源码-BigDataArchitect:大数据架构师

    bigdata_redis 6. bigdata_zookeeper 7. bigdata_spark 课程大纲目录,持续更新中。。。 hadoop阶段: 1. hadoop-大数据启蒙-初识HDFS 2. hadoop-HDFS理论基础读写流程 3. hadoop-HDFS集群搭建-伪分布式模式 4. ...

Global site tag (gtag.js) - Google Analytics