Redis

Redis简介:

Redis是Remote Dictionary Server(远程数据服务)的缩写

由意大利人 antirez(Salvatore Sanfilippo)  开发的一款 内存高速缓存数据库,该软件使用C语言编写,它的数据模型为 key-value,它支持丰富的数据类型(结构),比如 String  list  hash   set  sorted set。

可持久化(随时把数据备份到硬盘中一份),保证了数据安全。

安装redis:

安装redis-2.6.14.tar.gz

shell# cd /home/xxxxxxxxxxxxx/tar

shell# tar zxvf redis-2.6.14.tar.gz

shell# cd redis-2.6.14

shell# make

shell# cd src

将redis源码目录下的  src目录里的 redis-cli和 redis-server 拷贝到工作目录里.同时将源码根目录下的redis.conf 也拷贝到工作目录里

shell# mkdir /usr/local/redis

shell# cp redis-cli redis-server /usr/local/redis

shell# cp ../redis.conf /usr/local/redis

至此在linux上编译安装redis服务端和客户端已经大功告成

启动redis服务器:

shell# cd /usr/local/redis

shell# vi ./redis.conf

把参数daemonize no 改为 daemonize yes    #后台启动Redis

shell# ./redis-server redis.conf

Redis的具体使用 :

Redis中的数据模型是:key-value 

key的操作:给被存储信息取的的一个“名字”,类似于变量名,不允许使用空格或者\n换行,key的设置注意可读性user > u 。

key常见操作:

 16个数据库的下标0,1,2,3,....,15.

 

5种数据类型:字符串、哈希、链表、集合、有序集合

数据类型String的操作:

string是redis最基本的类型,redis的string可以包含任何数据,包括jpg图片或者序列化的对象,单个value值最大上限是1G字节。

string常用操作:

incr:  increment增长

      给变量进行数字累加一操作,类似i++

      用于计数器使用

  该指令可以用于新key 或 旧key的使用

  ① 新key:创建该key,同时设置为1的信息  设置为0,然后++1

  ② 旧key:要求该key的类型严格为‘int整型’的。

decr指令操作与incr操作类似,减一操作,具体使用可以参考incr指令。新key设置为0,然后--1

incrby  decrby 是按照指定的幅度进行累加操作,具体使用参考incr指令。 

substr  key  start end  //内容截取,内容下标从0开始,截取的内容包括start和end位置。

数据类型Hash哈希:

hash数据类型存储的数据与mysql数据库中存储的记录极为类似。较少使用

数据类型List链表:

list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。

这使得list既可以用作栈,也可以用作队列。

对于队列:
(1)链表头部作为队列头部,尾部作为队列尾部;
(2)链表头部作为队列尾部,链表尾部作为队列头部;
对于栈:
(1)对于链表头部作为进出栈的方向;
(2)对于链表尾部作为进出栈的方向;
对于以上操作设计到的四个方法:
lpush、lpop、rpush、rpop;

 

Set集合类型:

redis的set是string类型的无序集合,set集合最大可以包含(2的32次方-1  int整型的数字限制)个元素。

关于set集合类型除了基本的添加、删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能。

注意:每个集合中的各个元素不能重复。该类型应用场合:qq好友推荐。

Set集合操作:


 1 sadd key member            添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误 
 2 srem key member            从key对应set中移除给定元素,成功返回1,如果member在集合中不存在或者key不存在返回0,如果key对应的不是set类型的值返回错误 
 3 spop key                   删除并返回key对应set中随机的一个元素,如果set是空或者key不存在返回nil 
 4 srandmember key            同spop,随机取set中的一个元素,但是不删除元素 
 5 smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key不是set类型返回错误 
 6 scard key                  返回set的元素个数,如果set是空或者key不存在返回0 
 7 sismember key member       判断member是否在set中,存在返回1,0表示不存在或者key不存在 
 8 sinter key1 key2...keyN    返回所有给定key的交集 
 9 sinterstore dstkey key1...keyN 同sinter,但是会同时将交集存到dstkey下 
10 sunion key1 key2...keyN    返回所有给定key的并集 
11 sunionstore dstkey key1...keyN 同sunion,并同时保存并集到dstkey下 
12 sdiff key1 key2...keyN     返回所有给定key的差集 
13 sdiffstore dstkey key1...keyN 同sdiff,并同时保存差集到dstkey下 
14 smembers key               返回key对应set的所有元素,结果是无序的 

 

 

Sort Set排序集合类型

list链表类型: 内部存储的元素有排序功能、会存在多个相同的元素。

Set集合类型: 元素没有排序功能、不存在多个相同元素

该Sort Set是两种类型(list和set)的集中体现,称为排序集合类型。元素有排序功能、不存在多个相同元素

和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个。通过/可以有序的获取集合中的元素

权:一个集合中多个元素做排序的标准。

值:元素的具体信息。

zadd key score member        添加元素到集合,元素在集合中存在则更新对应score 
zrem key member                 删除指定元素,1表示成功,如果元素不存在返回0 
zincrby key incr member      增加对应member的score值,然后移动元素并保持skip list保持有序。返回更新后的score值 
zrank key member                返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的 
zrevrank key member           同上,但是集合中元素是按score从大到小排序 
zrange key start end             类似lrange操作从集合中去指定区间的元素。返回的是有序结果 
zrevrange key start end        同上,返回结果是按score逆序的 
zrangebyscore key min max 返回集合中score在给定区间的元素 
zcount key min max              返回集合中score在给定区间的数量 
zcard key                               返回集合中元素个数 
zscore key element               返回给定元素对应的score 
zremrangebyrank key min max 删除集合中排名在给定区间的元素 
zremrangebyscore key min max 删除集合中score在给定区间的元素 

 

posted @ 2016-10-07 15:42  林豆包的长颈鹿  阅读(142)  评论(0编辑  收藏  举报