Redis学习(三):API的使用和理解

对Redis来说,所有的key都是字符串,value可以有多中数据类型,value值字符串类型的限制为512M

一:字符串

1.使用场景

缓存,计数器,分布式锁

2.命令

get key  获取key对应的value O(1)

set key value 设置key和value O(1)

del key 删除key-value  O(1)

incr key key自增1,若key不存在get(key) = 1 O(1)

decr key key自减1,若key不存在,自减后get(key) =-1 O(1)

incrby key k key自增k,若key不存在,自增后get(key)=k O(1)

decrby key k key自减k,若key不存在,自减后get(key)=-k O(1)

set key value 不管key是否存在,都会设置 O(1)

setnx key value key不存在,才设置  O(1)

set key value xx key存在,设置  O(1)

mget key1,key2,key3... 批量获取key,原子操作 O(n)

mset key1 value1 key2 value2 key3 value3... 批量设置key-value O(n)

getset key newvalue set keynewvalue并返回旧的value O(1)

append key value 将value追加到旧的value   O(1)

strlen key 返回字符串的长度(注意中文) O(1)

incrbyfloat key 3.6 增减key对应的值3.6,无对应减少值,可以传负数达到减的效果   O(1)

getrange strart end 获取字符串指定下标所有的值 比如getrange 0 2

setrange key index value 设置下标所有对应的值

二:哈希键值

1.结构

key                 filed    value

user:1:info     name  Kobe

                       age     38

                       date    201

add a new value

新增               time   2019

可单独去操作

2.特点

filed不能相同,value可相同

3.API

hget key  field 获取hash key对应的field的value  O(1)

hset key  field value 设置hash key 对应field的value O(1)

hdel key field 删除hash key对应的field的value   O(1)

hexists key field  判断hash key是否有field    O(1)

hlen key 获取hash key field的数量  O(1)

hmget key field1 field2 ...fieldN 批量获取hash key的一批field对应的值   O(n)

hmset key field1 value1 field2 value2 ...fieldn valuen 批量设置hash key的一批field value  O(n)

hgetall key 返回对应key所有属性field和值value O(n) Tips:若数据较多,注意使用该命令

hvals key 返回hash key对应的所有field的value  O(n)

hkeys key 返回hash key对应的所有field O(n)

hsetnx key field value 设置hash key 对应field的value(若field已经存在,则失败)  O(1)

hincrby key field intCounter  设置hash key 对应的field的 value自增intCounter  O(1)

hincrbyfloat key field floatCounter 设置hincrby浮点数   O(1)

三:list

1.结构

key                 elements

user:1:info      a-b-c-d...

2.特点

(1)有序,根据插入顺序 

(2)可以重复

(3)左右两边插入弹出

3.API

 rpush key value1 value2 ...valuen   从列表的 右端插入值(1-N个)O(1~n)

lpush key value1 value2 ...valuen    从列表的 左端插入值(1-N个)O(1~n)

linsert key before|after value newValue  在list指定的值前后插入newValue  O(n)

lpop key 从左边弹出一个item  O(1)

rpop key 从右边弹出一个item   O(1)

lrem key count value 

根据count值,从列表中删除所有value相等的项

(1)count < 0,从左到右,删除最多count个value相等的项

(2)count > 0,从右到左,删除最多Math.abs(count)个value相等的项

(3)count  = 0,删除所有value相等的值

ltrim key start end 按照索引范围修剪列表  O(1) 保留起始和结束list

lrange key start end(包含end) 获取列表指定索引范围索引item O(n)

lindex key index 获取类别指定索引的item   O(n)

llen key 获取列表长度  O(1)

lset key index newValue 设置列表指定索引值为newValue O(n)

其他

blpop key timeout     lpop 阻塞版本,timeout是阻塞超时时间,timeout=0为永远不阻塞 O(1)

brpop key  timeout    rpop阻塞版本,timeout是阻塞超时时间,timeout=0为永远不阻塞  O(1)

Tips:

1.LRUSH + LPOP = Stack

2.LPUSH + RPOP = Quene

3.LPUSH + LTERM = Capped Collection 

4.LPUSH + BRPOP = Message Quene

四:set

1.特点

无序,无重复元素,支持集合间操作(交集,并集,差集)

2.API

sadd key element 向集合key添加element(如果element已经存在,添加失败)O(1)

srem key element 将集合key中的element移除掉  O(1)

scard key 计算集合大小

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

srandmember key count 从集合中随机挑选count个元素

spop key 从集合中随机弹出一个元素 

smembers key 获取集合所有元素  (无序,若元素特别多,需小心使用)

集合间API

sdiff key1 key2 差集

sinter key1 key2 交集

sunion key1 key2 并集

sdiff|sinter|sunion +store destkey 将差集、交集、并集保存到destkey中(实例:unionstore testset user:1:follow user:1:info)

五:zset

1.结构

key             score        value 

user:info      1              name

2.特点

无重复元素,有序,element+score

3.API

zadd key score elemet(可以是多对,score 可重复,element不可以重复)   添加score和element  O(logN)

zrem key element (多个element)删除元素  O(1)

zscore key element 返回运算的分数  O(1)

zincrby key increScore element 增加或减少元素分数 O(1)

zcard key 返回元素的个数  O(1)

zrange key start end [WITHSCORES] 返回指定索引范围内的升序元素[分值]  O(logN+m)

zrangebyscore key minScore maxScore [WITHSCORES] 返回指定分数范围内的升序元素 O(logN+m)

zcount key minScore maxScore 返回有序集合内在指定分数范围内的个数   O(logN+m)

zremrangebyrank key start end 删除指定排名内的升序元素  O(logN+m)

zremrangebyscore key minScore maxScore   删除指定分数内的升序元素 O(logN+m)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值