redis-五大数据类型

1、redis-五大数据类型-string

​ redis最常使用的数据类型就是string类型: java对象可以转为字符串,图片也可以转为图片

​ redis中string类型的大小最大可以为512m,redis的字符串二进制安全

​ 1、向redis中存入string键值对:set k v

​ 如果键相同,后设置的值会覆盖之前的

​ 2、获取redis中指定键的值: get k

​ 3、给redis中指定键的值追加内容: append k appendStr

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHeRcLAT-1591843958874)(assets/1590481397066.png)]

​ 4、获取键的值的长度: strlen key

​ 5、当键不存在时才设置键值对: setnx k v

​ 分布式锁

​ 6、设置值自增1 : incr k

​ 如果k的值已存在,必须时整形才可以自增

​ 如果k不存在,默认在0的基础上+1

​ 应用场景: 计数器、密码今天输错的次数、秒杀库存自减

​ 7、设置值自减1 : decr k

​ 8、自定义步长增减: incrby k count , decrby k count

​ 9、设置键值对同时设置过期时间: setex key secods val

​ 使用场景: 保存手机验证码

​ 10、批量操作

​ 1、批量存入多个键值对: mset k v k v …

​ 2、批量获取多个键的值: mget k1 k2 k3…

​ 3、批量设置键值对当键不存在时: msetnx k1 v1 k2 v2…

​ 当有一个键如果存在时,所有的数据都保存失败

​ 所有的键都不存在时,才可以存储成功

redis命令具有原子性,命令执行时,必须成功或者失败

java中的i++是否是原子操作?

​ 不是,执行时,分为三步:先获取i的变量的值,执行i++操作,将计算后的结果设置到内存中

​ i=0;两个线程分别对i进行++100次,值是多少?2~200

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7IL7JOn8-1591843958876)(C:\Users\senbition\AppData\Roaming\Typora\typora-user-images\1590495314004.png)]

​ 11、获取值指定范围内的内容:getrange k start end

​ 获取时,start和end索引都包含

​ end如果是-1 代表获取到最后

​ 12、替换字符串指定范围的内容:setrange k start replacestr

​ 13、设置值并返回被替换的内容:getset k newVal

2、redis-五大数据类型-list

​ 有序,元素可以重复,redis中list就是一个双向链表

2.1 向list中添加元素:

​ lpush key v1 v2 v3 v4…

v4 v3 v2 v1 

​ rpush key v1 v2 v3…

2.2 从list中获取元素:

​ lrange key startIndex stopIndex

​ 起始索引从0开始计算,stop值如果为-1代表获取所有元素

2.3 从list中吐出一个元素:

​ lpop key :从左吐出一个元素

​ rpop key:从list的右边吐出一个元素

​ lpush 从左向右推入 , rpop,从右开始吐出元素

2.4 获取下表对应的元素:

​ lindex key index

2.5 获取List元素个数

​ llen key

2.6 删除list中的元素:

​ lrem key count val : 从左开始删除list中count个val

2.7 在指定位置插入元素:

​ linsert key before/after 插入点 新元素

​ 在插入点值前或后插入新的元素

3、redis-五大数据类型-set

​ 自动去重,无序,底层是value值为null的hash

​ 应用场景: 秒杀成功的用户列表

3.1 创建set并添加元素:

​ sadd key v1 v2 v3 v4…

3.2 获取set中的所有元素:

​ smembers key

3.3 判读set中是否包含某个元素:

​ sismember key val

​ 0 代表不存在,1代表存在

3.4 获取set中元素的个数:

​ scard key

3.5 随机获取set中若干个元素:

​ srandmemeber key count

3.6 删除set中的元素:

​ srem key v1 v2 …

3.7 随机从set中吐出N个元素:

​ spop key count

​ 值如果吐完了,键也被删除

3.8 两个set之间的并集差集交集:

​ sunion key1 keys :求两个set的并集

​ sinter key1 key2 :交集

​ sdiff key1 key2 :差集

4、redis-五大数据类型-hash

​ redis前面string、list、set只能存字符串类型,如果需要在redis中保存对象, hash就是键值对的结构,redis的键指向一个hash,hash又由多对键值对组成

4.1 创建hash并存入属性属性值

​ hset key field val :存入hash,hash结构的键是key,给hash结构存入一对键值对,field是属性名,val是属性值

​ hmset key field1 val1 field2 val2 …

4.2 查询hash执行的属性值:

​ hget key filed :获取hash结构的field属性值

​ hmget key field1 field2 … :获取hash结构的多个属性的属性值

4.3 判断hash中是否存在指定属性:

​ hexists key filed

4.4 获取hash结构所有的属性名或者所有的属性值

​ hkeys key

​ hvals key

4.5 给hash结构指定属性的属性值设置增量:

​ hincrby key field increment

4.6 给hash设置属性属性值时,当不存在时才设置:

​ hsetnx key field val

​ java代码操作redis时,一般使用 string存储java对象

​ gson、fastjson 可以将java对象转为json字符串存入到redis中

​ 获取时再还原为java对象

5、redis-五大数据类型-zset

​ 按照添加数据的分数有序集合,和set基本一样,自动去重

​ zset底层也是hash,但是利用了hash-val列来存分数,hash-key存zset的数据

​ 排行榜: 考试成绩(成绩)、销量排行榜(销量)

​ zset存数据时,必须携带分数

5.1 向zset中添加元素和它的分数:

​ zadd key score1 val1 score2 val2 …

5.2 获取zset中的元素:

​ zrange key startindex stopindex withscores

​ 按照分数升序查询起始索引到结束索引区间的数据并携带分数

​ zrerange key startindex stopindex :按分数降序查询

​ zrangebyscore key minScore maxScore :升序查询指定分数区间包含边界的数据

​ zrevrangebyscore key maxScore minScore :降序查询指定分数段的元素

5.3 给zset中的指定元素的分数添加增量

​ zincrby zsetkey score val

5.4 删除zset中元素:

​ zrem zsetkey val:

5.5 统计分数段内的元素的数量

​ zcount key minScore maxScore

5.6 获取元素在zset中的索引[从0开始]

​ zrank key val :升序获取元素的索引

​ zrevrank key val :降序获取元素的索引

​ 销量排行榜:书城项目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值