Redis读书笔记之API的理解和使用

一、全局命令

1.查看所有键

keys * 

2.键总数

dbsize

3.检查键是否存在

exists key :存在返回1,不存在返回0

4.删除键

del key [key ...]:返回结果为成功删除键的个数,删除一个不存在的键返回0

5.键过期

expire key seconds / ttl key

ttl命令会返回键的剩余过期时间:

a.>=0的整数:键剩余的过期时间,

b.-1:键没有设置过期时间

c.-2:键不存在

6.键的数据结构类型

type key

二、单线程架构

Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。

一条命令从客户端到达服务端之后不会被立即执行,所有命令都会进入一个队列中,然后逐个被执行。

Redis作为单线程还能那么快的原因:

1.纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的重要基础。

2.非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转化为事件,不在网络I/O上浪费过多时间。

3、单线程避免了线程切换和竞态产生的消耗。

三、字符串

1、常用命令

A.设置键

set key value [ex seconds] [px milliseconds] [nx|xx]

ex seconds : 为键设置秒级过期时间

px milliseconds:为键设置毫秒级过期时间

nx:键必须不存在,才可以设置成功,用于添加

xx:与nx相反,键必须存在,才可以设置成功,用户更新

setex key seconds value : 同ex选项

setnx key value:同nx选项

B.获取值

get key 

C.批量设置值

mset key value [key value ...]

D.批量获取值

mget key [key ...]

E:计数

incr key 

incr命令用于对值做自增操作:

值不是整数,返回错误;值是整数,返回自增后的结果;键不存在,按照值为0自增,返回结果为1。

decr key :自减

incrby key increment:自增指定数字

decrby key decrement:自减指定数字

incrbyfloat key increment:自增指定浮点数

2.不常用命令

A.追加值

append key value : 字符串尾部追加值

B.字符串长度

strlen key 

C.设置并返回原值

getset key value 

D.设置指定位置的字符

setrange key offeset value

E.获取部分字符串

getrange key start end

 

四、哈希

 1、命令

hset  key field value :设置值

hget key field :获取值

hdel key field [field ...] :删除field

hlen key  :计算field个数

hmget key field [field...] :批量获取field-value

hmset key field value [field value...] :批量设置

hexists key field :判断field是否存在

hkeys key :获取所有field

hvals key :获取所有value

hgetall key :获取所有field-value;如果哈希元素个数比较多,hgetall会存在阻塞Redis的可能,可用hscan

hincrby | hincrbyfloat  key field increment:自增,increment为增长值

hstrlen key field :计算value的字符串长度

 

五、列表

rpush key value [value ...] :从右到左插入元素

lpush key value [value ...] :从左到右插入元素

linsert key before|after pivot value :从某个元素(pivot)前或后插入元素

lrange key start end :获取指定范围内的元素列表

索引下标从左到右:0~N-1;从右到左:-1~-N

lindex key value :获取指定索引下标的元素

llen key :获取列表长度

lpop key :从列表左侧弹出元素

rpop key :从列表右侧弹出元素

lrem key count value :删除指定元素

count > 0 ,从左到右,删除最多count个元素

count < 0,从右到左,删除最多count绝对值个元素

count = 0,删除所有

ltrim key start end :按照索引范围修剪列表

lset key index newValue :修改指定索引下标的元素

blpop|brpop key [key ...] timeout :阻塞

key[key...]:多个列表的键;timeout:阻塞时间(单位:秒)

1)列表为空:如果timeout=3,客户端要等到3秒后返回;如果timeout=0,客户端一直阻塞下去

2)列表不为空:客户端会立即返回

 

六、集合

sadd key element [element...] :添加元素

srem key element [element...] :删除元素

scard key :计算元素个数

sismember key element :判断元素是否在集合中存在

srandmember key [count] :随机从集合中返回指定个数元素,返回的元素在集合中依然存在

spop key [count]:从集合中随机弹出指定个数元素,弹出的元素在集合中会被删除

smembers key :获取所有元素

sinter key [key ...] :求多个集合的交集

sunion key [key ...] :求多个集合的并集

sdiff key [key ...] :求多个集合的差集

sinterstore destination key [key ...] :将交集的结果保存

sunionstore destination key [key ...] :将并集的结果保存

sdiffstore destination key [key ...] :将差集的结果保存

 

七、有序集合

zadd key [NX|XX] [CH] [INCR] score member [score member...] :添加成员

  nx:member必须不存在,才可以设置成功;

  xx:member必须存在,才可以设置成功;

  ch:返回此次操作后,有序集合元素和分数发生变化的个数;

  incr:对score做增加,相当于后面介绍的zincrby;

zcard key :计算成员个数

zscore key member :计算某个成员的分数

zrank key member:分数从低到高计算成员的排名

zrevrank key member:分数从高到低计算成员的排名

zrem key member [member ...] :删除成员

zincrby key increment member :增加成员的分数

zrange key start end [withscores] :返回指定排名范围的成员,从低到高

zrevrange key start end [withscores]:返回指定排名范围的成员,从高到低

zrangebyscore key min max [withscores] [limit offset count] :返回指定分数范围的成员,从低到高

zrevrangebyscore key max min [withscores] [limit offset count] :返回指定分数范围的成员,从高到低

zcount key min max :返回指定分数范围的成员个数

zremrangebyrank key start end :删除指定排名内的升序元素

zremrangebyscore key min max :删除指定分数范围的成员

zinterstore destination numkeys key [key...] [weights weight [weight ...]] [aggregate sum|min|max]:交集

  destination:交集计算结果保存到这个键,

  numkeys:需要交集计算键的个数,

  key[key ...]:需要做交集计算的键,

  weights weight[weight...]:每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1,

  aggregate sum|min|max:计算成员交集后,分值可以按照sum、min、max做汇总,默认值是sum

 zunionstore destination numkeys key [key ...] [weights weight [weight...]] [aggregate sum|min|max]:并集

 

八、键管理

A.单个键管理

rename key newkey :键重命名

renamenx key newkey :键重命名,只有在newkey不存在时才覆盖

randomkey :随机返回一个键

expire key seconds :键在seconds秒后过期

expireat key timestamp :键在秒级时间戳timestamp后过期

ttl key :查询键剩余过期时间,返回秒

pttl key :查询键剩余过期时间,返回毫秒

ttl(pttl) key 三种返回结果:

  >=0的整数:键剩余的过期时间

  -1:键没有设置过期时间

  -2:键不存在

pexpire key milliseconds :键在milliseconds毫秒后过期

pexpireat key milliseconds-timestamp :键在毫秒级时间戳timestamp后过期

persist key :清除键的过期时间

move key db:迁移键到目标数据库

dump + restore :数据迁移

migrate:数据迁移命令,相当于将dump、restore、del三个命令组合起来,具有原子性

B.遍历键

keys pattern:全量遍历键

scan cursor [match pattern] [count number] :渐进式遍历键

C.数据库管理

select dbIndex:切换数据库

flushdb/flushall:清除数据库,flushdb只清除当前数据库,flushall清除所有数据库

 

posted @ 2017-07-19 14:16  梦想在前,我在后  阅读(211)  评论(0编辑  收藏  举报