Redis key value db
This presentation is the property of its rightful owner.
Sponsored Links
1 / 35

Redis Key/Value DB PowerPoint PPT Presentation


  • 257 Views
  • Uploaded on
  • Presentation posted in: General

Redis Key/Value DB. 云端事业部 / 云安全工程部 —— 周波. 目录. Redis 简介 Nosql DB 简介 和 Memcached 的比较 数据结构 存储结构及存储格式 Redis 的安装、操作和应用举例 常用命令 参考资料. Redis 简介. redis 是一个 key-value 存储系统 。 和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string( 字符串 ) 、 list( 链表 ) 、 set( 集合 ) 和 zset( 有序集 合 ) 。

Download Presentation

Redis Key/Value DB

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


Redis key value db

Redis Key/Value DB

云端事业部/云安全工程部——周波


Redis key value db

目录

Redis简介

Nosql DB简介

和Memcached的比较

数据结构

存储结构及存储格式

Redis的安装、操作和应用举例

常用命令

参考资料


Redis

Redis 简介

redis是一个key-value存储系统。 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集 合)。

这些数据类型支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,支持各种不同方式的排序。

redis 与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。


Nosql db

Nosql DB简介

什么是Nosql DB?

NoSQL,意即反SQL运动,是一种非关系型的数据存储,key/value键值对存储。

现有Nosql DB 产品

Redis/MongoDB/Memcached/Hbase/Cassandra/

Tokyo Cabinet/Voldemort/Dynomite/Riak/

CouchDB/Hypertable/Flare/Tin/Lightcloud/

KiokuDB/Scalaris/Kai/ThruDB,  ......


Nosql db1

Nosql DB简介

为什么要使用NOSQL非关系数据库?

High performance - 对数据库高并发读写的需求

Huge Storage - 对海量数据的高效率存储和访问的需求

High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求


Redis memcached

Redis与Memcached 比较

相同点

Redis和Memcached都是开源项目,都提供很多的client库可供选择。

两者都是Nosql DB,且都在内存存储数据,处理数据速度快。


Redis memcached1

Redis与Memcached 比较

功能上差异

从协议上看,Redis提供更多的数据结构和操作,如set, stack, range操作等

Redis不仅仅是个cache,提供persistent和chain replication,加上#1,可以近似替代Memcached+MySQL

Redis支持不同的db空间,通过selectdb来切换到不同的db空间。从而实现数据的隔离。

Memcached提供binary protocol和sasl协议,ms Redis还没有支持


Redis memcached2

Redis与Memcached 比较

实现上差异

内存管理方式差别很大,Redis使用独立的VM管理内存,将大部分value进行压缩后放到磁盘上,类似swap out的概念

Memcached使用libevent库,而Redis则原生的使用了epoll,kqueue等多个异步通信模型


Redis memcached3

Redis与Memcached 比较

性能上差异

网络上众说纷纭,有的说redis快,有的说Memcached快。以下是网络上提供的一组性能比较数据。


Redis memcached4

Redis与Memcached 比较


Redis memcached5

Redis与Memcached 比较


Redis memcached6

Redis与Memcached 比较


Redis1

Redis 数据结构

redis目前提供四种数据类型:string,list,set及zset(sorted set)。


Redis2

Redis数据存储结构

redis使用了两种文件格式:全量数据和增量请求。

全量数据格式是把内存中的数据写入磁盘, 便于下次读取文件进行加载;

增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。


Redis3

Redis数据存储格式

Redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

save seconds updates :指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。

appendonly yes/no :是否在每次更新操作后进行日志记录。

appendfsync no/always/everysec :数据缓存同步至磁盘的方式。


Redis4

Redis的安装

下载安装源码包

>wget‘http://code.google.com/p/redis/downloads/detail?name=redis-2.0.4.tar.gz’

>tar xzf redis-2.0.4.tar.gz

>cd redis-2.0.4

>make


Redis5

Redis工具

redis-server:Redis服务器的daemon启动程序

redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作

redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能

redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况。


Redis6

Redis的配置

daemonize:是否以后台daemon方式运行

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save * *:保存快照的频率,可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名


Redis7

Redis的配置

dir:数据快照的保存目录(这个是目录)

appendonly:每次写操作会记一条log

appendfsync:如何同步到磁盘

slaveof <masterip> <masterport>:配置主从服务器


Redis8

Redis操作

启动Redis Server

>./redis-server

这样会加载默认配置redis.conf,也可配置多个redis端口,启动时指定配置文件:

>./redis-server redis_6380.conf


Redis9

Redis操作

内置client访问Redis Server

>./redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

>./redis-cli -p 6380 info


Redis10

Redis操作


Redis11

Redis新特性

Sub/Pub(发布/订阅)

Pub/Sub功能(即Publish,Subscribe)意思是发布及订阅功能。简单的理解就像我们订阅blog一样,不同的是,这里的客户端与server端采用长连接建立推送机制,一个客户端发布消息,可以在多个客户端收到通知。


Redis12

Redis新特性应用

SCMQ(云安全消息队列)


Redis13

Redis 备份机制

Redis支持master-slave的主从配置,配置方法是在从机的配置文件中指定slaveof参数为主机的ip和port即可,

其数据复制方式可以是一主一从或者是一主多从的方式,Redis在master是非阻塞模式,也就是说在slave执行数据同步的时候,master是可以接受客户端的请求的,并不影响同步数据的一致性,然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询,

Redis的master/slave模式下,master提供数据读写服务,而slave只提供读服务


Redis14

Redis 备份应用


Redis15

Redis 备份应用


Redis16

Redis命令总结

连接操作相关的命令

quit:关闭连接(connection)

auth:简单密码认证

持久化

save:将数据同步保存到磁盘

bgsave:将数据异步保存到磁盘

lastsave:返回上次成功将数据保存到磁盘的Unix时戳

shundown:将数据同步保存到磁盘,然后关闭服务

远程服务控制

info:提供服务器的信息和统计

monitor:实时转储收到的请求

slaveof:改变复制策略设置

config:在运行时配置Redis服务器


Redis17

Redis命令总结

对value操作的命令

exists(key):确认一个key是否存在

del(key):删除一个key

type(key):返回值的类型

keys(pattern):返回满足给定pattern的所有key

randomkey:随机返回key空间的一个

keyrename(oldname, newname):重命名key

dbsize:返回当前数据库中key的数目

expire:设定一个key的活动时间(s)

ttl:获得一个key的活动时间

select(index):按索引查询

move(key, dbindex):移动当前数据库中的key到dbindex数据库

flushdb:删除当前选择数据库中的所有key

flushall:删除所有数据库中的所有key


Redis18

Redis命令总结

对String操作的命令

set(key, value):给数据库中名称为key的string赋予值value

get(key):返回数据库中名称为key的string的value

getset(key, value):给名称为key的string赋予上一次的value

mget(key1, key2,…, key N):返回库中多个string的value

setnx(key, value):添加string,名称为key,值为value

setex(key, time, value):向库中添加string,设定过期时间time

mset(key N, value N):批量设置多个string的值

msetnx(key N, value N):如果所有名称为key i的string都不存在,

incr(key):名称为key的string增1操作

incrby(key, integer):名称为key的string增加integer

decr(key):名称为key的string减1操作

decrby(key, integer):名称为key的string减少integer

append(key, value):名称为key的string的值附加value

substr(key, start, end):返回名称为key的string的value的子串


Redis19

Redis命令总结

对List操作的命令

rpush(key, value):在名称为key的list尾添加一个值为value的元素

lpush(key, value):在名称为key的list头添加一个值为value的 元素

llen(key):返回名称为key的list的长度

lrange(key, start, end):返回名称为key的list中start至end之间的元素

ltrim(key, start, end):截取名称为key的list

lindex(key, index):返回名称为key的list中index位置的元素

lset(key, index, value):给名称为key的list中index位置的元素赋值

lrem(key, count, value):删除count个key的list中值为value的元素。

lpop(key):返回并删除名称为key的list中的首元素

rpop(key):返回并删除名称为key的list中的尾元素

blpop(key1, key2,… key N, timeout):lpop命令的block版本。

brpop(key1, key2,… key N, timeout):rpop的block版本。

rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部


Redis20

Redis命令总结

对Set操作的命令

sadd(key, member):向名称为key的set中添加元素member

srem(key, member) :删除名称为key的set中的元素member

spop(key) :随机返回并删除名称为key的set中一个元素

smove(srckey, dstkey, member):移到集合元素

scard(key) :返回名称为key的set的基数

sismember(key, member) :member是否是名称为key的set的元素

sinter(key1, key2,…key N) :求交集

sinterstore(dstkey, (keys)):求交集并将交集保存到dstkey的集合

sunion(key1, (keys)):求并集

sunionstore(dstkey, (keys)):求并集并将并集保存到dstkey的集合

sdiff(key1, (keys)) :求差集

sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合

smembers(key) :返回名称为key的set的所有元素

srandmember(key) :随机返回名称为key的set的一个元素


Redis21

Redis命令总结

对Hash操作的命令

hset(key, field, value):向名称为key的hash中添加元素field

hget(key, field):返回名称为key的hash中field对应的value

hmget(key, (fields)):返回名称为key的hash中field i对应的value

hmset(key, (fields)):向名称为key的hash中添加元素field 

hincrby(key, field, integer):将名称为key的hash中field的value增加integer

hexists(key, field):名称为key的hash中是否存在键为field的域

hdel(key, field):删除名称为key的hash中键为field的域

hlen(key):返回名称为key的hash中元素个数

hkeys(key):返回名称为key的hash中所有键

hvals(key):返回名称为key的hash中所有键对应的value

hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value


Redis key value db

参考资料

http://www.javaeye.com/topic/524977

http://liuxinglanyue.javaeye.com/blog/829202

http://192.168.0.5/cwiki/display/WEB/SCMQ

http://baike.baidu.com/view/4595959.htm

http://blog.haohtml.com/index.php/archives/6306

http://code.google.com/p/redis/wiki/PublishSubscribe

http://jeffxie.blog.51cto.com/blog/1365360/292106


Redis key value db

谢谢~~


  • Login