redis(三):redis常用命令、string\hash\list\set类型的基本命令及应用场景

目录

一、常用基本命令

‘有效时长’的应用场景

key的命名建议

二、redis的数据类型

2.1 string类型

string的应用场景:

2.2 Hash类型

 hash类型的应用场景

2.3 list类型的常用命令

2.4 set类型

2.5 sorted set类型(有序集合)


一、常用基本命令

#查看当前redis数据库所有的key
keys *

#判断是否存在某个key,存在返回1,不存在返回0
exists key

#设置关键字key的过期时间,单位s
expire key time

#查看关键字key的过期时间
ttl key

#删除关键字
del key

#新增关键字key,值为value
set key value

#关键字类型,若没有关键字,返回none
type key

#删除key的过期时间
persist key

‘有效时长’的应用场景

  • 限时的优惠活动信息
  • 网站数据缓存(对于一些要定时更新的数据,例如:积分排行)
  • 手机验证码
  • 限制网站访客频率(例如:3s最多访问5次)

key的命名建议

redis单个key允许存入512M大小。

  • key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率
  • key也不要太短,太短的话,key的可读性会降低
  • 一个项目中,key最好使用统统一的命名模式,例如:user:123:password;【表:id:password】
  • key名称区分大小写

二、redis的数据类型

redis支持五种类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等

2.1 string类型

#关键字赋值,如果多次赋值同一关键字key,值会覆盖,且无视类型(即:什么类型都可以赋值)
set key value

#setnx则是如关键字不存在,则赋值value,其返回1;若关键字存在,则不赋值,返回0;
setnx key value

#获取关键字的值,如果key不存在返回nil【在java中,就是空数据】 ,如果key存储的值不是字符串类型,返回一个错误。
get key

#获取存储在指定key中字符串的子字符串(即:截取start和end之间)
getrang key start end

#设置关键字key的新值,并返回key的旧值,若key不存在,返回nil
getset key value

#返回key所存储的字符串值得长度
strlen key

#删除key
del key

#批量写
mset k1 v1 k2 v2……
#批量读
mget k1 k2 k3

#【自增】每次执行,则key加1,如key不存在,那么key的值被初始化为0,然后再执行incr操作(即:不存在,该命令给key赋值为1),注意:key对应的值必须是数字类型字符串,不然会报错
incr key #默认增量1
incrby key n #指定增量值n

#【自减】每次执行,则可以减1,如key不存在,那么key的值被初始化为0,然后再执行decr操作(即:不存在,该命令给key赋值为-1),注意:key对应的值必须是数字类型字符串,不然会保存
decr key  #默认减量1
decrby key n #指定减量值n

string的应用场景:

  • string通常用于保存单个字符串或JSON字符串数据
  • 因string是二进制安全的,所以完全可以把一个图片文件的内容作为字符串来存储
  • 计数器(自增、自减),如:点赞、微博数、粉丝数

2.2 Hash类型

Hash类型是String类型的field和value的映射表,或者说是集合,也可看成具有key和value的map容器。【即:一条Hash类型的数据,里面可以包含多条key-value;Hash类似与object,里面的key就像是对象中的属性】

hash类型占用很少的磁盘空间,相比于JSON;

注意:hash类型的redis语法前面基本上都带h
#新增值
hmset key field value,如:hmset user:1 name ithing #关键字user:1中name字段值为ithing

#取值
hmget key field, 如:hmget user:1 name #获取user:1中的name字段的值
#获取一条hash数据中所有字段的值
hgetall key ,如:hgetall user:1 #获取user:1中所有字段值 

#批量插入
hmset key field1 value1 field2 value2 …… 

#批量获取指定的hash数据中的字段的值
hmget key field field1 field2……

#获取一天hash中的全部字段及值
hgetall key

#获取所有的hash字段
hkeys key

#获取hash数据字段的数量
hlen key

#删除一个或多个字段
hdel key field1 field2……

#只有在字段field不存在时,才赋值
hsetnx key field value

#为hash表key中的指定字段的整数值加上增量increment
hincrby key field increment
#为hash表key中的指定字段的浮点数值加上增量increment
hincrbyloat key field increment
#查看哈希表key中,指定的字段是否存在
hexisits key field

 hash类型的应用场景

  • 常用于存储一个对象
  • 为什么不用string存储一个对象?

2.3 list类型的常用命令

注意:list类型的命令前面带有l

#将一个或多个值插入列表头部(从左侧添加)
lpush key value1 value2……

#在列表中添加一个或多个值(从右侧添加)
rpush key value1 value2……

#将一个值插入到已存在的列表头部。如果列表不在,操作无效。
lpushx key value

#一个值插入已存在的列表尾部(最右边)。如果列表不在,操作无效。
rpushx key value

#取值
#获取列表长度
llen key

#通过索引获取列表中的元素
lindex key index

#获取列表指定范围内的元素
lrange key start stop 

#删除
lpop key 移出并获取列表的第一个元素(从左侧删除)
rpop key 移除列表的最后一个元素,返回值为移除的元素(总右侧删除)
blpop key1 key2……timout 移出并获取列表的第一个元素,
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。如:blpop key 1000
brpop key1 key2……timeout 移出并获取列表的最后一个元素,
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

#对列表截取,列表只保留所指定的元素
ltrim key start stop

#修改
#通过索引设置列表元素的值
lset key index value


#在列表元素的前或者后插入元素
linsert key before|after world value #将值value插入key对应列表的world元素的前或者后;

#高级语法

移除列表source的最后一个元素,并将该元素添加到另一个列表并返回
rpoplpush source destination
示例:
rpoplpush a1 a2   #a1的最后元素移到a2的左侧
rpoplpush a1 a1   #循环列表,将最后一个元素移到最左侧

#从列表中弹出一值,将其插入到另一个列表中并返回它,
如果没有则阻塞列表直到等待超时或发现可弹出元素为止;
brpoplpush source destination timeout

应用场景:

1.对数据量大的集合数据删减(热点新闻top5、关注列表、分页……)

2.任务队列(list通常用来实现一个消息队列,而且可以确保先后顺序,不必如mysql那样还需要通过order by来排序)

2.4 set类型

set类型不能重复的,无序的
………………………………………………………………………………………………………………………………………………………………………………
#添加一个或多个值在key中,形成一个set
sadd key value1 value2 ……
………………………………………………………………………………………………………………………………………………………………………………
#查看
smembers key
………………………………………………………………………………………………………………………………………………………………………………
#判断某值是否属于key集合,属于返回1,不属于,返回0
sismember key value
………………………………………………………………………………………………………………………………………………………………………………
#获取key集合中的元素个数
scard key
………………………………………………………………………………………………………………………………………………………………………………
#移除key集合中的某个元素
srem key value #移除key中的value值

应用场景:抽随机奖(原因:set类型不能重复的,无序的)

2.5 sorted set类型(有序集合)

1	ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数
2	ZCARD key
获取有序集合的成员数
3	ZCOUNT key min max
计算在有序集合中指定区间分数的成员数
4	ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
5	ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
6	ZLEXCOUNT key min max
在有序集合中计算指定字典区间内成员数量
7	ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合指定区间内的成员
8	ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员
9	ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员
10	ZRANK key member
返回有序集合中指定成员的索引
11	ZREM key member [member ...]
移除有序集合中的一个或多个成员
12	ZREMRANGEBYLEX key min max
移除有序集合中给定的字典区间的所有成员
13	ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员
14	ZREMRANGEBYSCORE key min max
移除有序集合中给定的分数区间的所有成员
15	ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到低
16	ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数从高到低排序
17	ZREVRANK key member
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
18	ZSCORE key member
返回有序集中,成员的分数值
19	ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的并集,并存储在新的 key 中
20	ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素分值)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值