slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
高性能 NoSQL 数据库 Redis PowerPoint Presentation
Download Presentation
高性能 NoSQL 数据库 Redis

Loading in 2 Seconds...

play fullscreen
1 / 30

高性能 NoSQL 数据库 Redis - PowerPoint PPT Presentation


  • 471 Views
  • Uploaded on

高性能 NoSQL 数据库 Redis. 盛大在线:徐江涛. 博客: http://www.paitoubing.cn. NoSQL 大行其道. 高并发请求. APP. 海量化数据. memcached. Disk. 内存. 图灵奖得主 Jim Gray :“ 内存是新的硬盘,硬盘是新的磁带”. Redis 分享大纲. Redis 是什么. Redis 的特性. Redis 的 API 及适用场景. Redis 的使用经验 , 运维参数. Redis 是什么. What is. sponsored by:. Redis is...

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '高性能 NoSQL 数据库 Redis' - indigo-shepard


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

高性能NoSQL数据库Redis

盛大在线:徐江涛

博客:http://www.paitoubing.cn

slide2

NoSQL 大行其道

高并发请求

APP

海量化数据

memcached

Disk

内存

图灵奖得主Jim Gray:“内存是新的硬盘,硬盘是新的磁带”

slide3

Redis分享大纲

Redis是什么

Redis的特性

Redis的API及适用场景

Redis的使用经验,运维参数

slide4

Redis是什么

What is

sponsored by:

Redis is...

an “advanced key-value store”

b y

S A LVATO R E S A N F I L I P P O

( @ a n t i r e z )

slide5

Redisvs Memcached

Memcached 操作实例

键(keys)

值(values)

page:index.html

<html><head>[...]

xDrSdEwd4dSlZkEkj+

user:101:session

login_count

“100001”

user:100:last_login_time

“102736485756”

所有的操作都是基于字符串、或者是2进制的数据格式、

操作起来大部分是GET、SET这2个命令操作,易于使用

slide6

Redisvs Memcached

和Memcached 一样、使用简单、性能高效(1G 1M)

异步持久化存储

支持多种数据类型;

Strings(字符)、 Lists(链表)、

Sets(集合)、ZSets(有序集合)、Hashes(哈希)

更多、更方便API接口 管理数据;

More commands

and More….

Is Redis

slide7

Redisvs Memcached

Redis 数据类型实例

键(keys)

值(values)

page:index.html

<html><head>[...]

String

{ 1, 2, 3, 4, 5 }

users_logged_in_today

Sets

latest_post_ids

[201, 204, 209,..]

List

users_and_scores

joe ~ 1.3483

bert ~ 93.4

fred ~ 283.22

chris ~ 23774.17

ZSets

slide8

Redis的API及适用场景

Strings 字符

value

C client

key

./redis-cli SETmystring “ hello world ”

return

./redis-cli GETmystring

hello world

slide9

Redis的API及适用场景

Strings 字符

GETSET

MGET

SETNX

SETEX

MSET

MSETNX

INCR

INCRBY

DECR

DECRBY

APPEND

SUBSTR

slide10

Redis的API及适用场景

Expiration

当把Redis当作缓存服务使用时,你可以设置数据的过期时间,不管是数据类型(string,list,zsets,sets,hash)是什么,

此系列命令都有效

EXPIRE paitoubing1234

TTL paitoubing

== 1234

slide11

Redis的API及适用场景

Deleting Keys

DEL paitoubing

EXISTSpaitoubing

== 0 (false)

slide12

Redis的API及适用场景

Lists

LPUSH

RPUSH

a

b

c

d

e

f

RPOP

LPOP

LPUSHpaitoubing a

slide13

Redis的API及适用场景

Lists

LLEN == 6

x

a

b

c

d

e

f

LRANGE 2 3

LREM 1 b

LINDEX 5

slide14

Redis的API及适用场景

队列服务Queues

RPUSH

a

b

c

d

e

f

LPOP

RPUSH paitoubing abc

RPUSH paitoubing def

LPOP paitoubing == “abc”

LPOP paitoubing == “def”

LPOP paitoubing == (nil)

slide15

Redis的API及适用场景

集合Sets

bruce tom zhangsan lisi

wangermazi xiaoyueyue fengjie

uid:1:followers

x

SREMuid:1:followers wangermazi

SMOVEuid:1:followers uid:2:followers lisi

xiaoyueyue fengjie liyuchun

furongjiejie

uid:2:followers

SADD uid:2:followers tom

slide16

Redis的API及适用场景

集合Sets

bruce tom zhangsan lisi

wangermazi xiaoyueyue fengjie

uid:1:followers

SCARD uid:1:followers == 7

SISMEMBER uid:1:followers xinxin == 0 (meaning false)

SRANDMEMBER uid:1:followers == “xiaoyueyue”

xiaoyueyue fengjie liyuchun

furongjiejie

uid:2:followers

SMEMBERS uid:2:followers

== xiaoyueyue fengjie liyuchun

furongjiejie

slide17

Redis的API及适用场景

集合Sets(交集、并集、差集)

bruce tom zhangsan lisi

wangermazi xiaoyueyue fengjie

uid:1:followers

xiaoyueyue fengjie

xiaoyueyue fengjie liyuchun

furongjiejie

uid:2:followers

SINTER uid:1:followers uid:2:followers == xiaoyueyue fengjie

SINTERSTORE

SUNION SUNIONSTORE

SDIFF SDIFFSTORE

slide18

Redis的API及适用场景

有序集合ZSets

Like Sets

每个元素,增加了rank,或是score

no time!

slide19

Redis的API及适用场景

Hashes(哈希)

产品:Product 1

HSET product:1 created_at 1290149988

HSET product:1 name“盛大点券”

created_at : 1290149988

product_id : 1

name : 盛大点券

available : 100

HSET product:1 available 100

HGETproduct:1 name == 盛大点券

HLEN product:1== 3

HKEYS product:1

== created_at, name,available

HGETALLproduct:1 ==

created_at => 102374657

name=> 盛大点券

available=> 100

HVALS HEXISTS HINCRBY HMGET HMSET

slide20

Redis的API及适用场景

Redis Social Network (社会化网络)

UGC

好友:双向关系

粉丝:单向关系

text

photo

blog、Message、photo、

more…..

slide21

Redis的API及适用场景

Redis Social Network (社会化网络)

Int 整形

新增用户

username

userid

INCR next_user_id

Return s [uid]

SET user:[uid]:name [username]

SET username:[username] [id]

变量值

新增日记

I NCR next_post_id

Return s [pid]

content

author

SET post:[pid]:content [content]

SET post:[pid]:author [uid]

LPUSH user:[uid]:posts [pid]

LPUSH posts:global [pid]

Unique IDs

slide22

Redis的API及适用场景

Enough commands! (版本更新快)

SUBSCRIBE

SORT

SLAVEOF

RENAME

MONITOR

PUBLISH

ZCARD

SELECT

SAVE

slide23

Redis的安装

下载:http://code.google.com/p/redis/

Redis的安装tar zxvfredis-version.tar.gzcdredis-versionmake由于没有make install,所以得把源代码目录里的关键文件手动复制到适当的位置:cp redis.conf /etc/cp redis-benchmark redis-cliredis-server /usr/bin/

修改/etc/redis.confdaemonize yes

启动redis服务

# /usr/bin/redis-server /etc/redis.conf

slide24

Redis的安装

Redis.conf (配置文件)

daemonize yes => 以守护进程的方式运行

maxmemory => Redis在启动时会把所有数据加载到内存中 ,设置使用内存限制,

新的vm机制,key存放内存,value会存放在swap区,不建议

可通过consistent hashing把数据分布到多个服务器上

=> 900秒内有1个改变,

300秒内有10个改变,

60秒内有10000个改变,

redis就会内存中的key保存到数据库文件中去

save 900 1save 300 10save 60 10000

dbfilename dump.rdb

保存数据的路径

slaveof 192.168.1.2 6379 => 在启动时,REDIS会自动从MASTER上把数据

先同步过来,而无需我们手动进行

MASTER上每有一次落地保存,会自动向SLAVE进行同步。

当然这里的问题是,如果MASTER不保存,

SLAVE也就无法得到这些数据,这和REDIS本身的内存写磁盘逻辑是一样

slide25

Redis的安装

masterauth <master-password>=> 当本机为从服务时,

设置主服务的连接密码(注释)

requirepass=> 连接密码(注释)

rdbcompression => 存储至本地数据库时是否压缩数据,默认为yes

maxclients => 最大客户端连接数,默认不限制(注释)

appendonly=> 是否在每次更新操作后进行日志记录,如果不开启,

可能会在断电时导致一段时间内的数据丢失。

因为redis本身同步数据文件是按上面save条件来同步的,

所以有的数据会在一段时间内只存在于内存中。默认值为no

appendfsync => 更新日志条件,共有3个可选值。

no表示等操作系统进行数据缓存同步到磁盘,

always表示每次更新操作后手动调用fsync()将数据写到磁盘,

everysec表示每秒同步一次(默认值)。

vm-enabled是否使用虚拟内存

slide26

Redis的主从-集群

https://github.com/antirez/redis/raw/master/design-documents/REDIS-CLUSTER

slave

slave

slave

slave

Sample demo,

同步数据

master

master

master

NO PRODUCT !

read

write

风险!

CONSISTENT HASH / 定容

client

client

client

SESSION

slide27

Redis的开发语言支持

Language Support

Ruby, Python, PHP, Erlang,

Tcl, Perl, Lua, Java, Scala,

Clojure, C#, C/C++,

JavaScript/Node.js, Haskell,

IO, Go

slide28

Redis端口的故事

Why?

6379

6379在是手机按键上MERZ对应的号码

MERZ取自意大利歌女Alessia Merz的名字

slide29

Redis的扩展阅读

我怎么获得更多,更全的Redis信息?

1、http://code.google.com/p/redis/

2、http://redis.io

3、http://antirez.com/

4、http://www.google.com

slide30

END

&

QA