一家专门做内部优惠的网站,呼伦贝尔建设工程检测网站,wordpress 屏蔽插件更新,做办公用品网站资料怎么收集一、Redis String字符串
1.简介
String类型在redis中最常见的一种类型 string类型是二制安全的#xff0c;可以存放字符串、数值、json、图像数据 value存储最大数据量是512M
2. 常用命令
set key value#xff1a;添加键值对 nx#xff1a;当数据库中…一、Redis String字符串
1.简介
String类型在redis中最常见的一种类型 string类型是二制安全的可以存放字符串、数值、json、图像数据 value存储最大数据量是512M
2. 常用命令
set key value添加键值对 nx当数据库中key不存在时可以将key-value添加到数据库 xx: 当数据库key存在时可以将key-value添加到数据库与nx参数互斥 ex: 设置key-value添加到数据库并设置key的超时时间(以秒钟为单位) px:设置key-value添加到数据库并设置key的超时时间(以豪秒钟为单位)与ex互斥 get key查询对应键值 append key value将给定的值追加到key的末尾 strlen key获取值的长度 setnx key value只有在key不存在时设置key-value加入到数据库 setex key timeout value添加键值对同时设置过期时间(以秒为单位) incr key将key中存储的数字加1处理只能对数字值操作。如果是空即不存在值为1 decr key将key中存储的数字减1处理只能对数字值操作。如果是空值为1 incrby key increment将key中存储的数字值增加指定步长的数值,如果是空值为步长。(具有原子性) decrby key decrement: 将key中存储的数字值减少指定步长的数值,如果是空值为步长。(具有原子性) mset key1 value1[ key2 value2...]同时设置1个或多个key-value值 mget key1[ key2...]同时获取1个或多个value msetnx key1 value1[ key2 value2...]当所有给定的key都不存在时同时设置1个或多个key-value值(具有原子性) getrange/substr key start end 将给定key获取从start(包含)到end(包含)的值 setrange key offset value从偏移量offset开始用value去覆盖key中存储的字符串值 getset key value 对给定的key设置新值同时返回旧值。如果key不存在则添加一个key-value值
3.应用场景
3.1单值缓存
set key value get key
3.2对象缓存
set stu:001 value(json) mset stu:001:name zhangsan stu:001:age 18 stu:001:gender 男 mget stu:001:name stu:001:age
3.3分布式锁
setnx key:001 true //返回1代表加锁成功 setnx key:001 true //返回0代表加锁失败 业务操作 del key:001 //执行完业务释放锁 set key:001 true ex 20 nx //防止程序意外终止导致死锁
3.4计数器
incr article:read:1001 //统计文章阅读数量
3.5分布式系统全局序列号
incrby orderid 100 //批量生成序列号
二、Redis List列表
1.简介
Redis列表是简单的字符串列表单键多值。按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含2的32次方-1个元素 底层是一个双向链表对两端的操作性能很高通过索引下标的操作中间的节点性能会较差
2.常用命令
lpush key value1[ value2...]从左侧插入一个或多个值 lpushx key value1[ value2...]将一个或多个值插入到已存在的列表头部 lrange key start stop获取列表指定范围内的元素0左边第1位-1右边第1 位0 ~-1取出所有 rpush key value1[ value2...]从右侧插入一个或多个值 rpushx key value1[ value2...]将一个或多个值插入到已存在的列表尾部 lpop key[count]移除并获取列表中左边第1个元素count表明获取的总数量,返回的为移除的元素 rpop key[count]移除并获取列表中右边第1个元素count表明获取的总数量,返回的为移除的元素 rpoplpush source destination移除源列表的尾部的元素(右边第一个)将该元素添加到目标列表的头部(左边第一个)并返回 lindex key index:通过索引读取列表中的元素不会移除元素llen key获取列表长度 linsert key before/after pivot element在 pivot基准元素前或者后面插入element如果key不存在返回0。如果 pivot不存在返回-1如果操作成功返回执行后的列表长度 lrem key count element根据count的值移除列表中与参数相等的元素 count0 移除表中所有与参数相等的值 count0 从表头开始向表尾搜索移除与参数相等的元素数量为count count0 从表尾开始向表头搜索移除与参数相等的元素数量为count的绝对值 lset key index element设置给定索引位置的值ltrim key start stop对列表进行修剪只保留给定区间的元素不在指定区间的被删除 brpop key timeout阻塞式移除指定key的元素如果key中没有元素就等待直到有元素或超时执行结束。3.应用场景
数据队列 堆栈stacklpushlpop 队列queuelpushrpop 阻塞式消息队列 blocking mqlpushbrpop 订阅号时间线 lrange key start stop
三、Redis Hash 哈希
1.简介
是一个string类型的键和value对象特别适合于存储对象类似于java里面学习的MapString,Object。 假设场景需要在redis中存储学生对象,对象属性包括(id,name,gender,age)有以下几种处理方式 方式一用key存储学生id用value存储序列化之后用户对象(如果用户属性数据需要修改操作较复杂开销较大) 方式二用key存储学生id属性名用value存储属性值用户id数据冗余 方式三用key存储学生id用value存储fieldvalue的hash。通过key(学生d)field(属性)可以操作对应数据
2.常用命令
hset key field value[ field value...]用于为哈希表中的字段赋值如果字段在hash表中存在则会被覆盖 hmset:用法同hset在redis4.0.0中被弃用 hsetnx key field value只有在字段不存在时才设置哈希表字段中的值 hget key field : 返回哈希表中指定的字段的值 hmget key field[ field...]获取哈希表中所有给定的字段值 hgetall key获取在哈希表中指定key的所有字段和值 hexists key field判断哈希表中指定的字段是否存在存在返回1 否则返回0 hkeys key获取哈希表中所有的字段 hvals key获取哈希表中所有的值 hlen key获取哈希表中的field数量 hdel key field[ field...]删除一个或多个哈希表字段 hincrby key field increment为哈希表key中指定的field字段的整数值加上增加increment hincrbyfloat key field increment为哈希表key中指定的field字段的浮点数值加上增加increment3. 应用场景
1.对象缓存 hset stu:001 name zhangsan age 20 gender man 2.电商购物车操作 以用户id作为key, 以商品id作为field以商品数量作为value 添加商品: hset user:001 s:001 1 hset user:001 s:002 2 增减商品数量:hincrby user:001 s:001 3 查看购物车商品总数: hlen user:001 删除商品 : hdel user:001 s:001 获取所有商品 hgetall user:001
四、Redis Set集合
1.简介
set是string类型元素无序集合。对外提供的功能和list类似是一个列表功能。集合成员是唯一的
2.常用命令 sadd key member[ member...]将一个或多个成员元素加入到集合中如果集合中已经包含成员元素则被忽略 smembers key返回集合中的所有成员。 sismember key member判断给定的成员元素是否是集合中的成员如果是返回1,否则返 回0 scard key返回集合中元素个数 srem key member[ member...]移除集合中一个或多个元素 spop key[ count]移除并返回集合中的一个或count个随机元素 srandmember key[ count]与spop相似返回随机元素不做移除 smove source destination member将member元素从source源移动到destination目标 sinter key[ key...]返回给定集合的交集(共同包含)元素 sinterstore destination key1[ key2...]返回给定所有集合的交集并存储到destination目标中 sunion key[ key...]返回给定集合的并集(所有)元素 sunionstore destination key1[ key2...]返回给定所有集合的并集并存储到destination目标中 sdiff key[ key...]返回给定集合的差集(key1中不包含key2中的元素) sdiffstore destination key1[ key2...]返回给定所有集合的差集并存储到destination目标中3.应用场景 抽奖 参与抽奖sadd cj001 user:13000000000 user:13455556666 user:13566667777 查看所有参与用户 smembers cj001 实现抽奖 spop cj001 3 / srandmember cj001 3 朋友圈点赞 快手/抖音 点赞 sadd like:friend001 user:001 sadd like:friend001 user:002取消点赞 srem like:friend001 user:001 判断用户是否已点赞 sismember like:friend001 user:001 显示点赞用户 smembers like:friend001 获取点赞次数 scard like:friend001 关注模型 sinter交集 sunion并集 sdiff 差集 微博 sadd g:list:u001 1001 sadd g:list:u002 1001 你们共同关注的 sinter交集 QQ 你们有共同好友 sinter交集 快手 可能认识的人 sdiff差集五、Redis zset有序集合
1.简介
有序集合是string类型元素的集合不允许重复出现成员 每个元素会关联一个double类型的分数redis是通过分数为集合中的成员进行从小到大的排序 有序集合的成员是唯一的但是分数可以重复 成员因为有序可以根据分数或者次序来快速获取一个范围内的元素
2. 常用命令
zadd key score member[ score member...]将一个或多个元素及其分数加入到有序集合中 zrange key min max [byscore|bylex] [rev] [ limit offset count] [withscores]返回有序集合指定区间的成员byscore按分数区间bylex按字典区间rev 反向排序(分数大的写前边小的写后边)limit分页(offset偏移量count返回的总数)withscores返回时带有对应的分数) zrevrange key start stop[ limit offset count]返回集合反转后的成员 zrangebyscore key min max [withscores] [ limit offset count]参考zrange用法 zrevrangebyscore key max min [withscores] [ limit offset count]参考zrange用法 zrangebylex key min max] [ limit offset count]通过字典区间返回有序集合的成员 zrangebylex k2 - 减号最小值,加号最大值 zrangebylex k2 [aa (ac[ 中括号表示包含给定值( 小括号表示不包含给定值 zcard key获取集合中的成员数量 zincrby key increment member 为集合中指定成员分数加上增量increment zrem key member[ member...]移除集合的一个或多个成员 zcount key min max统计集合中指定区间分数(都包含)的成员数量 zrank key member获取集合中成员的索引位置 zscore key member获取集合中成员的分数值
3.应用场景
1.按时间先后顺序排序朋友圈点赞 zadd 1656667779666 2.热搜 微博 今日头条 快手3.获取topN zrevrange k1 300 10 limit 0 10