您的位置:首页 > 理论基础 > 数据结构算法

Redis数据结构型数据库及其常用操作

2013-12-15 19:59 316 查看
NoSQL适用场景

•      对数据高并发读写

•      对海量数据的高效率存储和访问

•      对数据的高可拓展性和高可用性

 

Redis的介绍

Redis is an open source,advanced key-value store. It is often referredto as a data structure server since keys can contains strings,hashes,lists,setsand sorted sets.

 

上述数据类型都支持push/pop、add/remove

数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。 Bin_log   快照

 

Redis支持各种不同方式的排序。

 

Redis适用场合

•      取最新N个 数据的操作

•      排行榜应用,取TOP N操作

•      需要精确设定过期时间的应用

•      计数器应用

•      Uniq操作,获取某段时间所有数据排重值

•      实时系统,反垃圾系统

•      Pub/Sub构建实时消息系统

•      构建队列系统

•      缓存

 

Redis配置

daemonize  如果需要在后台运行,把该项改为yes

pidfile  配置多个pid的地址 默认在/var/run/redis.pid

bind  绑定ip,设置后只接受来自该ip的请求

port  监听端口,默认为6379

timeout  设置客户端连接时的超时时间,单位为秒

loglevel  分为4级,debug、varbose、notice、warning

logfile  配置log文件地址

database  设置数据库个数,默认使用的数据库为0

save  设置redis进行数据库镜像的频率

 

rdbcompression 在进行镜像备份时,是否进行压缩

Dbfilename  镜像备份文件的文件名

Dir  数据库镜像备份的文件放置路径

Slaveof  设置数据库为其他数据库的从数据库

Masterauth  主数据库连接需要的密码验证

Requirepass 设置登录时需要使用的密码

Maxclients 限制同时连接的客户数量

Maxmemory 设置redis能够使用的最大内存

Appendonly  开启append only模式

 

Appendfsync 设置对appendonly.aof文件同步的频率

vm-enabled 是否开启虚拟内存支持

vm-swap-file 设置虚拟内存的交换文件路径

vm-max-memory  设置redis使用的最大物理内存大小

vm-page-size 设置虚拟内存的页大小

vm-pages 设置交换文件的总的page数量

vm-max-threads  设置VMIO同时使用的线程数量

Glueoutputbuf  把小的输出缓存存放在一起

hash-max-zipmap-entries 设置hash的临界值

Activerehashing  重新hash

 

 

 

Strings类型

Set name Jason

Get name

 

setnx  为空返回1,并设置  不为空返回0

setex  插入并设置时间

setrange name 6 gmail.com  6代表下标

mset 一次设置多个key的值

getrange name 0 5,返回0-5内的字符

incr key6  做++操作

incrby  加指定数字 incrby key 5

decr

decrby

getset

mget

append

strlen  取指定key的value值长度

 

 

 

hashes类型

Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)。Hash特别适用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象

 

hset 设置hash field为指定值,如果key不存在,则先创建。

hsetnx

hmset

hincrby

hlen

hdel

hkeys

hvals 返回所有value

hgetall

 

 

list类型

List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list即可以作为栈,又可以作为队列。

 

Lpush list头部添加数据

linsert

lset

lrange

 

ltrim list8 1 2 保留范围内的数据

 

lpop 从list的头部删除元素,并返回删除元素

rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部

lindex

llen

 

sets类型

set是集合,它是string类型的无序集合。Set是通过hash table实现的,添加、删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。

 

sadd

smembers

srem 删除名称为key的set中的元素  srem myset one 成功返回1

 

spop随机返回并删除一个元素

sdiff 返回所有给定key与第一个key的差集

sdiffstore 返回的差集存到另一个key  sdiffstore newSet myset1myset2

sinter 取交集

sinterstore

sunion 返回所有给定key的并集

sunionstore

smove 从第一个key对应的set中移除member并添加到第二个对应的set中

             smove myset2 myset7 three

  scard  查看集合元素数量

sismember 测试member是否名称为key的set元素

srandmember  随机返回名称为key的set的一个元素,但不删除元素

 

sorted sets

zadd       zadd myzset 1 noe

zrange

zrem

zincrby

zrank(按score从小到排序)

zrangebyscore myset2 3 withscore

zremrangebyrank

 

 

Redis常用命令

键值相关命令

Keys *

exists

del 

expire

ttl 获取key的有效时长

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息