您的位置:首页 > 数据库 > Redis

redis 入门笔记

2013-01-28 17:34 393 查看
本文原址:http://www.open-open.com/doc/view/f8feff4967ca48cba0b9b71b38999f21

1.

key-value数据库,高性能的 读/存 数据库

其存储 < RAM(内存)

数据存储的两种形式 (1)内存==>持久化到硬盘 (2)一条一条注入硬盘,当然效率较低

其性能10倍于MySQL

是一种不支持SQL的数据库(NoSQL)

2.

Redis键

key是二进制安全的,也就是说,从"foo"字符串到"JPEG"的文件都可以

eg:"user:1000:password" "object-type:id:field"

3.

字符串类型

命令:SET GET

eg:set mykey "abc"

get mykey

4.

INCR

将字符串值解析成整型,将其加1避免key值重复的好办法

5.

list

redis的list是基于linked lists 实现的,这意味着即使在一个list中有数百万个元素,在头部和尾部添加一个元素的操作,其时间复杂度也是常数级别的

访问速度受限

LPUSH

Redis Lists用Linked list实现的原因是:

对于数据库系统来说,至关重要的特征是:能非常快的在很大的列表上添加元素,另一个重要因素是,Redis lists能在常数时间取得常数长度

LPUSH命令:可向list左边(头部)添加一个新元素

RPUSH命令:可向list的右边(尾部)添加一个新元素

LRANGE命令:可从list中取出一定范围的元素

这两个索引都可以为负,来告知Redis从尾数开始计数,因此-1表示最后一个元素,-2表示list中的倒数第二个元素

eg:rpush messages "hello"

lrange messages 0 2

这样就不需要SQL ORDER BY操作,将会非常快,也会非常容易扩展到百万级别元素的规模

LLEN得到list的长度

向Redis list压入ID而不是实际的数据

eg:incr next.news.id

set news:1:title "Redis is simple"

set news:1:url "http://code.google.com/"

lpush submitted.news 1

6.

Redis集合

Redis集合是未排序的集合,其元素是二进制安全的字符串

SADD命令:可以向集合添加一个新元素

eg:sadd myset 1

sadd myset 2

sadd myset 3

SMEMBERS命令:检查某个元素是否存在

eg:smembers myset

简单的方案:

对每个想加标签的对象,用一个标签ID集合与之相关联,并且对于每个已有的标签,一组对象ID与之关联,

例如假设我们的新闻ID 1000被加了三个标签tag1,2,5和77,就可以设置下面两个集合:

sadd news:1000:tags 1

sadd news:1000:tags 2

sadd news:1000:tags 5

sadd news:1000:tags 77

sadd tag:1:objects 1000

sadd tag:2:objects 1000​

sadd tag:5:objects 1000​

sadd tag:77:objects 1000​

获得一个对象的所有标签:

smembers news:1000:tags

SINTER命令:可以在不同集合之间取出交集

eg:sinter tag:1:objects tag:2:objects tag:5:objects tag:77:objects

Redis集合和list都是可排序的

Redis1.4将增加Hash类型

基本上有序集合从某种程度上说是SQL世界索引 在Redis中的等价物

它包含一个精简的有序列表和一个Hash Table,因此添加一个元素的时间复杂度是O(log(N))

ZRANGE命令:有序输出

ZREVRANGE命令:反序输出

eg:zrange hackers 0 -1

zrevrange hackers 0 -1

SORT命令:对所有集合做不同的排序(耗费CPU)

要想得到多种排序,一种可选方案是同时每个元素加入多个有序集合。

例如获取所有1950年之前出生的人,可以用ZRANGEBYSCORE命令

eg:zrangebyscore backers -inf 1950

ZREMRANGEBYSCORE命令:删除区间内的元素

例如从有序集合中删除生日介于1940-->1960

eg:zremrangebyscore hackers 1940 1960 返回已删除元素数量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: