Redis学习之常用指令

Redis数据类型(5种常用)

string String

hash HashMap

list LinkedList

set HashSet

sorted_set TreeSet

string类型数据

基本操作

添加/修改数据

set key value        //添加或修改key&value

获取数据

get key         //获取该key下的value

删除数据

del key         //删除该key

添加/修改多个数据

mset key1 value1 key2 value2 …        //批量添加或修改key&value

获取多个数据

mget key1 key2 …        //批量获取key下的value

获取数据字符个数(字符串长度)

strlen key        //获取该key下的value字符串的长度

追加信息到原始信息后部(如果原始信息存在就追加,否则新建)

append key value        //添加信息到该key尾部(没有则新建该key)

扩展操作

设置数值数据增加指定范围的值

incr key        //让key的value增加1(该key的value得是数字)

incrby key increment        //让key的value增加指定大小increment(该key的value得是数字)

incrbyfloat key increment         //让key的value增加指定大小increment(该key的value得是数字 可以增加小数 已经是小数的不可以增加Integer型数)

设置数值数据减少指定范围的值

decr key        //让key的value减少1(该key的value得是数字)

decrby key decrement         //让key的value减少指定大小decrement(该key的value得是数字)

设置数据具有指定的生命周期

setex key seconds value        //新增一个具有指定生命周期的key(或者修改现有的key的生命周期)

psetex key milliseconds value         //新增一个具有指定生命周期的key(或者修改现有的key的生命周期)时间单位为毫秒

操作的注意事项

数据操作不成功的反馈与数据正常操作之间的差异

         ① 表示运行结果是否成功

                (integer) 0 : false 失败

                (integer) 1 : true 成功

        ② 表示运行结果值 

                (integer) 3 → 3 3个 

                (integer) 1 → 1 1个

数据未获取到

        (nil)等同于null

数据最大存储量

        512MB

数值计算最大范围(java中的long的最大值)

        9223372036854775807 

hash类型数据

基本操作

添加/修改数据

hset key field value        //设置key以及其所属下的field与对应的value

获取数据

hget key field        //获取key下对应的field的value

hgetall key        //获取key下所有field和value(field与value都会显示)

删除数据

hdel key field1 [field2]        //删除key下field(可以一次删除多个)

添加/修改多个数据

hmset key field1 value1 field2 value2 …        //设置key以及其所属下的多个field与对应的value

获取多个数据

hmget key field1 field2 …        //获取key下对应的多个field的value

获取哈希表中字段的数量

hlen key        //获取key下有多少个field

获取哈希表中是否存在指定的字段

hexists key field        //判断key中是否存在对应的field

 扩展操作

获取哈希表中所有的字段名或字段值

hkeys key        //获取key中所有的field

hvals key        //获取key中所有的value

设置指定字段的数值数据增加指定范围的值

hincrby key field increment        //让key中field对应的value增加指定大小increment(该key的value得是数字)

hincrbyfloat key field increment        //让key中field对应的value增加指定大小increment(该key的value得是数字 可以增加小数 已经是小数的不可以增加Integer型数)

操作的注意事项

hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到, 对应的值为(nil)

每个 hash 可以存储 2^32-1个键值对

hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存 储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用

hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问瓶颈 

list类型数据

基本操作

添加/修改数据

lpush key value1 [value2] ……        //设置or修改一个key在其左端添加value

rpush key value1 [value2] ……        //设置or修改一个key在其右端添加value

获取数据

lrange key start stop        //获取一个key中从start到stop的value

lindex key index        //获取一个key中对应index的value

llen key        //获取一个key中有多少个value

获取并移除数据

lpop key        //在key左端删除一个value

rpop key         //在key右端删除一个value

扩展操作

规定时间内获取并移除数据

blpop key1 [key2] timeout        //从key的左端弹出一个数据,如果第一个key中没有数据,那么将访问第二个key,依此类推 如果所有的key中都没有数据则会进入阻塞态进行等待,直到有数据或者到达超时时间 并且所有的key只会弹出第一个有数据的key的数据

brpop key1 [key2] timeout        //从key的右端弹出一个数据,如果第一个key中没有数据,那么将访问第二个key,依此类推 如果所有的key中都没有数据则会进入阻塞态进行等待,直到到达有数据或者到达超时时间 并且所有的key只会弹出第一个有数据的key的数据

brpoplpush source destination timeout         //将一个key的尾部数据弹出放入另一个key的头部,如果第一个key中没有数据,那么会进入阻塞态进行等待,直到有数据或者到达超时时间

 移除指定数据

lrem key count value        //删除该key中count个对应的value(比如key中有3个qwe删除2个)如果key中对应的value不足count个,那么只会删除key中存在的对应的value

操作注意事项

 list中保存的数据都是string类型的,数据总容量是有限的,最多2^32 - 1 个元素 (4294967295) 

list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作

获取全部数据操作结束索引设置为-1

list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载

set类型数据

基本操作

添加数据

sadd key member1 [member2]        //往key中添加数据(没有则新建key)

获取全部数据

smembers key        //获取key中的全部数据

删除数据

srem key member1 [member2]        //删除key中的数据

获取集合数据总量

scard key        //获取key中有多少个member

判断集合中是否包含指定数据 

sismember key member        //判断key中是否存在指定member

扩展操作

随机获取集合中指定数量的数据

srandmember key [count]        //随机从key中获取count个member(默认为1)

随机获取集合中的某个数据并将该数据移出集合 

spop key [count]        //随机从key中获取并删除count个member(默认为1)

 求多个集合的交、并、差集

sinter key [key]        //求多个key中member的交集

sunion key [key]        //求多个key中member的并集

sdiff key [key]        //求多个key中member的差集(第一个key中的member去除其他key中的公共member的结果)

求多个集合的交、并、差集并存储到指定集合中

需要注意的是,将结果放入destination中会将destination中原本的内容去除掉

sinterstore destination key [key]        //求多个key中member的交集并放入destination中

sunionstore destination key [key]        //求多个key中member的并集并放入destination中

sdiffstore destination key [key]        //求多个key中member的差集并放入destination(第一个key中的member去除其他key中的公共member的结果)

将指定数据从原始集合中移动到目标集合中

smove source destination member        //将source中的指定member移动到destination中

操作的注意事项

set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份

set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间 

sorted_set 类型数据

基本操作

添加数据

zadd key score1 member1 [score2 member2]        //给key添加member并标注member的score(排序按照score来排)

获取全部数据

zrange key start stop [WITHSCORES]        //返回key中从start到stop的member(按照score排序) 可选择withscores 让member带对应的score一起返回

zrevrange key start stop [WITHSCORES]        //返回key中逆序从start到stop的member(按照score排序 可选择withscores 让member带对应的score一起返回)

删除数据

zrem key member [member ...]        //删除key中的指定member与其score

按条件获取数据

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]        //按照范围获取数据(可选择withscores 让member带对应的score一起返回 limit中offset表示往右几位开始查询 count表示返回几个)

zrevrangebyscore key max min [WITHSCORES]        //按照范围逆序获取数据(可选择withscores 让member带对应的score一起返回 limit中offset表示往右几位开始查询 count表示返回几个)

条件删除数据

zremrangebyrank key start stop        //按照序列范围删除数据

zremrangebyscore key min max        //按照大小范围删除数据

获取集合数据总量

zcard key        //获取key中有多少个member

zcount key min max        //获取key中有多少个member score在指定范围之间

集合交、并操作

 zinterstore destination numkeys key [key ...]        //对numkeys个key进行交操作将结果放入destination中(是以member来判断)

zunionstore destination numkeys key [key ...]        //对numkeys个key进行并操作将结果放入destination中(是以member来判断)

扩展操作

获取数据对应的索引(排名)

zrank key member        //获取member在key中的排名

zrevrank key member        //获取member在key中的逆序排名

score值获取与修改

 zscore key member        //获取key中指定member的值

zincrby key increment member        //将key中指定member的值进行修改

操作的注意事项

 score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992

score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时 候要慎重

sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反 复覆盖,保留最后一次修改的结果

key通用操作

基本操作

删除指定key

del key        //删除指定key

获取key是否存在

exists key        //判断指定key是否存在

获取key的类型

type key        //获取指定key的类型

扩展操作(时效性控制)

为指定key设置有效期

expire key seconds        //给指定key设置有效期(单位:秒)

pexpire key milliseconds        //给指定key设置有效期(单位:毫秒)

expireat key timestamp        //使用Unix时间表示key的生存时间(单位:秒)

pexpireat key milliseconds-timestamp        //使用Unix时间表示key的生存时间(单位:毫秒)

 获取key的有效时间

ttl key        //获取key的剩余生存时间(精确到秒)

pttl key        //获取key的剩余生存时间(精确到毫秒)

切换key从时效性转换为永久性

persist key        //将key的生存时间设置为永久

查询key

keys pattern        //查询模式规则:

* 匹配任意数量的任意符号         ? 配合一个任意符号         [] 匹配一个指定符号

keys * 查询所有

keys it* 查询所有以it开头

keys *heima 查询所有以heima结尾

keys ??heima 查询所有前面两个字符任意,后面以heima结尾

keys user? 查询所有以user开头,最后一个字符任意

keys u[st]er 查询所有以u开头,以er结尾,中间包含一个字母,s或t

其他操作

为key改名

rename key newkey        //将指定key删除赋值给newkey 如果newkey已存在将覆盖newkey

renamenx key newkey        //将指定key删除赋值给newkey 如果newkey已存在操作将失败

对所有key排序

sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]       

//BY用于生成用于排序的 Key  可以是一个并不存在的key,这会导致SORT命令跳过排序操作        

//ASC从小到大 DESC从大到小         

//ALPHA使字符串值按照字典顺序排序         

//LIMIT后offset表示往右偏移几位开始 count表示个数         

//GET获取每一个原始列表、集合或有序集合中元素的key       

//STORE将结果存储于一个特定的列表中,以代替返回到客户端

其他key通用操作 

help @generic         //可以查看其他操作

数据库通用操作

db基本操作

切换数据库

select index        //切换到指定数据库

其他操作

 quit        //退出

ping        //判断与服务器连接是否仍然生效(服务器会返回一个pong)

echo message        //打印给定的message(一般用于测试)

db相关操作

数据移动

move key db        //将当前数据库的key移动到选定的数据库 db 当中。如果key 在目标数据库中已存在,或者key在源数据库中不存在,则key不会被移动。

数据清除 

dbsize        //返回当前数据库key的数量

flushdb        //清空当前数据库中的所有 key

flushall        //清空所有数据库中的所有key

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值