Redis操作

目录

Redis五大数据类型

Redis键(key)

String类型

Redis列表(List)

Redis集合(Set)

Redis哈希(Hash)

Redis有序集合(Zset)


Redis五大数据类型

Redis键(key)

keys * 查看当前库所有key

exists <key> 判断某个key是否存在

type <key> 查看你的key是什么类型

del <key> 删除指定的key数据

unlink <key> 根据value选择非阻塞删除,即先奏后斩

仅将key从keyspace元数据中删除,真正的删除会在后续异步操作中执行

expire <key> <10> 10秒钟:为指定的key设置过期时间

ttl <key> 查看还有多少秒过期,-1表示永不过期,-2表示已过期

select <index> 命令切换数据库,默认是0号数据库

dbsize 查看当前数据库的大小

flushdb 清空当前数据库

flushall 清空所有数据库

String类型

字符串底层采用列表存储,即ArrayList,长度不够时会进行扩容

set <key> <value> 添加键值对,value可以有双引号也可以没有,如果key已经存在则覆盖value

append <key> <appendValue> 在key对应的值末尾追加appendValue,返回字符串总长度

strlen <key> 获取key对应的字符串长度

setnx <key> <value> 添加键值对,与set的不同在于,只能添加新的,无法覆盖

setxx <key> <value> 覆盖key对应的value,只有key存在时才可行,与上一条指令互斥

incr <key> 将key对应的value加一,当且仅当value为数字

decr <key> 将key对应的value减一,当且仅当value为数字

incrby/decrby <key> <num> 将key对应的value加/减num,当且仅当value为数字

mset <k1> <v1> <k2> <v2> <k3> <v3> 一次设置多个键值对,相当于调用多次set

mget <k1> <k2> <k3> 与mset对应,相当于调用多次get

msetnx 以及msetxx同上,但是这两个指令具有原子性,一个不成功都失败

getrange <key> <起始位置> <结束位置> 获取子串,从起始位置到结束位置,起始位置最小为0,结束位置最大为length-1

setrange <key> <起始位置> <value> 从起始位置开始以value覆盖字符串

getset <key> <value> 用value覆盖key对应的值,返回旧的值

Redis列表(List)

 Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部或尾部。

它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差

 lpush/rpush <key> <value1> <value2> ... 往key对应的值左/右边逐个插入一个或多个值

lpop/rpop <key> 从左/右边弹出一个值,若弹出后列表空了,则删除key

Irange <key> <start> <stop> 按照索引下标获得元素,从start到stop,若stop为-1表示右边第一个

rpoplpush <k1> <k2> 从k1的右边弹出插入到k2的左边

lindex <key> <index> 取key对应的列表的索引为index的元素

llen <key> 获取列表的长度

linsert <key> <before/after> <value> <newValue> 在value的前面/后面插入一个newValue

lrem <key> <num> <value> 从左边删除num个value

lset <key> <index> <value> 替换第index个元素为value

Redis集合(Set)

 Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口。

Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加、删除、查找的复杂度都是O(1)。

sadd <key> <value1> <value2>... 添加一个或多个元素到key集合中,其中重复的会被忽略 

smember <key> 取出该集合的所有值

sismember <key> <value> 判断集合key是否含有value

scard <key> 返回该集合的元素个数

srem <key> <value1> <value2>... 删除集合中的某个元素

spop <key> 随机从该集合中弹出一个值,值取完了key也就不存在了

srandmember <key> <n> 随机从该集合中取出n个值,不会从集合中删除

smove <key1> <key2> <value> 把集合key1中的value移动到集合key2

sinter <key1> <key2> 返回两个集合的交集元素

sunion <key1> <key2> 返回两个集合的并集元素

sdiff <key1> <key2> 返回两个集合的差集元素(在key1中,不在key2中)

Redis哈希(Hash)

Redis hash是一个键值对集合,String类型的field和value的映射表,可以用于存储对象

hest <key> <field> <value> 给key集合中的field键赋值为value

hget <key> <field> 取出key集合中的field键对应的值

hmset <key> <field> <value>... 批量添加

hexists <key> <field> 查看该hash集合中是否存在field域

hkeys 列出该hash集合的所有field

hvals 列出该hash集合的所有value

hincrby <key> <field> <increment> 为哈希表key中的域field的值加上增量

hsetnx <key> <field> <value> 添加值,当且仅当field不存在

Redis有序集合(Zset)

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。

不同之处是有序集合的每个成员都关联了一个评分(score),这个评分被用来从低到高排序。集合的成员是唯一的,但评分是可以重复的。

由于元素是有序的,因此可以快速根据评分或者索引获取一个范围的元素

zadd <key> <score1> <value1> <score2> <value2>... 往集合中添加一个或多个值

zrange <key> <start> <stop> [withscore] 输出下标在start和stop之间的索引, 可以选择是否输出score

zrangebyscore <key> <min> <max> [withscore] 输出score在min和max之间的元素

zrevrangebyscore <key> <min> <max> [withscore] 同上,但改为由大到小输出

zincrby <key> <increment> <value> 为元素的score加上增量

zrem <key> <value> 移除元素

zcount <key> <min> <max> 统计该集合,分数区间内的元素个数

zrank <key> <value> 返回该值在集合中的排名,从0开始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值