首页 > 其他 > 详细

redis基础学习

时间:2014-03-04 15:39:31      阅读:485      评论:0      收藏:0      [点我收藏+]


下面我们来简单的操作一下数据库。
插入数据
redis 127.0.0.1:6379> set name wwl
OK
设置一个key-value 对
查询数据
redis 127.0.0.1:6379> get name
"wwl"
取出key 所对应的value
删除键值
redis 127.0.0.1:6379> del name
删除这个key 及对应的value
验证键是否存在
redis 127.0.0.1:6379> exists name
(integer) 0

2.1 前言
Redis 的作者antirez(Salvatore Sanfilippo)曾经发表了一篇名为Redis 宣言(Redis Manifesto)
的文章,文中列举了Redis 的七个原则,以向大家阐明Redis 的思想。
1、Redis 是一个操作数据结构的语言工具,它提供基于TCP 的协议以操作丰富的数据结构。
在Redis 中,数据结构这个词的意义不仅表示在某种数据结构上的操作,更包括了结构本身
及这些操作的时间空间复杂度。
2、Redis 定位于一个内存数据库,正是由于内存的快速访问特性,才使得Redis 能够有如此
高的性能,才使得Redis 能够轻松处理大量复杂的数据结构,Redis 会尝试其它的存储方面
的选择,但是永远不会改变它是一个内存数据库的角色。
3、Redis 使用基础的API 操作基础的数据结构,Redis 的API 与数据结构一样,都是一些最基
础的元素,你几乎可以将任何信息交互使用此API 格式表示。作者调侃说,如果有其它非人
类的智能生物存在,他们也能理解Redis 的API。因为它是如此的基础。
4、Redis 有着诗一般优美的代码,经常有一些不太了解Redis 有的人会建议Redis 采用一些
其它人的代码,以实现一些Redis 未实现的功能,但这对我们来说就像是非要给《红楼梦》
接上后四十回一样。
5、Redis 始终避免复杂化,我们认为设计一个系统的本质,就是与复杂化作战。我们不会为
了一个小功能而往源码里添加上千行代码,解决复杂问题的方法就是让复杂问题永远不要提
复杂的问题。
6、Redis 支持两个层成的API,第一个层面包含部分操作API,但它支持用于分布式环境下
的Redis。第二个层面的API 支持更复杂的multi-key 操作。它们各有所长,但是我们不会推
出两者都支持的API,但我们希望能够提供实例间数据迁移的命令,并执行multi-key 操作。

7、我们以优化代码为乐,我们相信编码是一件辛苦的工作,唯一对得起这辛苦的就是去享

受它。如果我们在编码中失去了乐趣,那最好的解决办法就是停下来。我们决不会选择让
Redis 不好玩的开发模式。
Redis 的作者antirez 曾笑称Redis 为一个数据结构服务器(data structures server),我认为这
是一个非常准确的表述,Redis 的所有功能就是将数据以其固有的几种结构来保存,并提供
给用户操作这几种结构的接口。本文将介绍Redis 支持的各种数据类型及其操作接口。

 

2.2 strings 类型及操作

string 是最简单的类型,你可以理解成与Memcached 是一模一样的类型,一个key 对应一个
value,其上支持的操作与Memcached 的操作类似。但它的功能更丰富。

2.3 hashes 类型及操作

Redis hash 是一个string 类型的field和value的映射表.它的添加、删除操作都是 O(1() 平均)。
hash 特别适合用于存储对象。相较于将对象的每个字段存成单个string 类型。将一个对象存
储在hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新
建一个hash 对象时开始是用zipmap(又称为small hash)来存储的。

 

2.4 list 列表及操作

list 是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key 理
解为链表的名字。

2.5 sets 类型及操作

set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合
求交并差等操作,操作中key 理解为集合的名字。
Redis 的set 是string 类型的无序集合。set 元素最大可以包含(2 的32 次方)个元素。

2.6 sorted sets 类型及操作

sorted set 是set 的一个升级版本,它在set 的基础上增加了一个顺序属性,这一属性在添加
修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。可以理解为有
两列的mysql 表,一列存value,一列存顺序。操作中key 理解为zset 的名字。
和set 一样sorted set 也是string 类型元素的集合,不同的是每个元素都会关联一个double
类型的score。sorted set 的实现是skip list 和hash table 的混合体。
当元素被添加到集合中时,一个元素到score 的映射被添加到hash table 中,所以给定一个
元素获取score 的开销是O(1),另一个score 到元素的映射被添加到skip list,并按照score 排
序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是O(log(N))和skip list 的
开销一致,redis 的skip list 实现用的是双向链表,这样就可以逆序从尾部取元素。sorted set 最
经常的使用方式应该是作为索引来使用.我们可以把要排序的字段作为score 存储,对象的id
当元素存储。

redis基础学习,布布扣,bubuko.com

redis基础学习

原文:http://www.cnblogs.com/lampblog/p/redis.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!