redis常用的数据类型及应用场景

您所在的位置:网站首页 redis常见的数据类型及应用场景 redis常用的数据类型及应用场景

redis常用的数据类型及应用场景

2023-10-08 06:52| 来源: 网络整理| 查看: 265

Redis 基本数据类型及应用场景 一:String是Redis最常见的数据类型 A:常用的字符串操作: 1)set key value:设置一个值; 2)get key:返回key对应的value; 3)strlen key:返回key对应的value字符串长度; 4)append key value:给key对应的value追加值,如果key不存在,相当于set一个新的值; 5)getrange key start stop:返回key对应value的一个子字符串,位置从start到stop; B:若String内容是数值,则有一下操作 1)incr key:在给定key的value上增加1,并返回增加后的值,redis中的incr是一个原子操作,支持并发; 2)incrby key value:给定key的value上增加value值,并返回增加后的值,相当于key=key.value+value;这也是一个原子操作; 3)decr:在给定key的value上减少1; 4)decrby key value:给定key的value上减少value值; C:String类型的常见应用场景

1)、缓存功能:字符串最经典的使用场景,redis最为缓存层,Mysql作为储存层,绝大部分请求数据都是在redis中操作,由于redis具有支撑高并发特性,所以缓存通常能起到加速读写和降低 后端压力的作用。

2)、计数器:许多应用都会使用redis作为计数的基础工具,他可以实现快速计数、查询缓存的功能。 如:视频播放数系统就是使用redis作为视频播放数计数的基础组件。

3)、id生成器:我们在使用mysql时,把数据存在mysql后,该数据就会自动生成一个自增长的id,这个id肯定是不重复的,那类似这种生成一个不重复的id也可以用redis的string数据结构来做。

二:List类型是一个双端链表结构,主要功能是put,pop,获取元素等 A:常用的list类型操作 1)lpush key value...:在一个list最前面添加一个或多个元素。 2)rpush key value...:在一个list最后面添加一个或多个元素。 3)llen key:返回指定list的元素个数。 4)lrange key start stop:获取一个list中的指定元素(如果是0,-1则表示从头取到末尾所有元素) 5)ltrim key start stop:裁剪指定list,剩下的内容从start到stop。 6)lpop key :从list最前面弹出一个元素。 7)rpop key:从list最后面弹出一个元素。 8)lindex key index:从list中获取索引为index的元素 B:List常见的应用场景

一个List很典型的应用场景:社区应用 社区应用是一个很广泛的概念,我们平时用的微博,朋友圈,博客,论坛都算是社区应用,社区应用无非就是一些帖子或状态,然后可以给这些帖子或状态回贴或评论,还有就是可以点赞。

示例:1,点赞;(点赞存储的数据肯定不单单是图片,例如还有时间,名称等 这里只是贪图方便而已) 1,创建一条微博内容:set user:1:post:91 “hello world”; 2,点赞:lpush post:91:good “kobe.png” lpush post:91:good “jordan.png” lpush post:91:good “James.png” 3,查看有多少人点赞: llen post:91:good 4,查看哪些人点赞:lrange post:91:good 0 -1 思考,如果用数据库实现这个功能,SQL会多复杂??

示例2:回复 1,创建一条微博内容:set user:1:post:92 “oh my lady gaga” 2,回复:lpush post:92:reply “heihei” lpush post:92:reply “enen” 5,查询微博的回复:lrange post:92:reply 0 -1

三:Set结构和java区别不大,数据都是不可以重复且无序 A:Set类型的操作 1)sadd key member....:给set添加一个或多个元素 2)scard key:返回set的元素个数 3)smembers key:返回指定set内所有的元素,以一个list形式返回 4)srem key member:从set中移除一个给定元素 5)sismember key member:判断给定的一个元素是否在set中,如果存在,返回1,如果不存在,返回0 6)srandmember key count:返回指定set中随机的count个元素 7)sunion key key....:用key和key....做并集,结果返回一个list; 8)sdiff key key....:用key和key....做差集,结果返回一个list; 9)sinter key key ... :用key和key....做交集,结果返回一list; 10)sunionstore destination key key ... :获取多个key对应的set之间的并集,并保存为新的key值;目标值也是一个set; B:Set类型的应用场景

1,去重; 2,抽奖: 1)初始化用户池: sadd luckdraws ‘user1’ ‘user2’ ‘user3’ ‘user4’ ‘user5’ ‘user6’ ‘user7’ ‘user8’ ‘user9’ ‘user11’ ‘user12’ ‘user13’ 2)抽3个三等奖: srandmember luckdraws 3 srem luckdraws user… 3)抽2个二等奖: srandmember luckdraws 2 srem luckdraws user… 4)抽1个一等奖: srandmember luckdraws 1

四:SortedSet每一个添加的值都有一个对应的分数,放进去的值按照该分数升序存在一个集合中 A:SortedSet的常用操作 1)zadd key score member:添加一个带分数的元素,也可以同时添加多个. 2) zcount key min max :给定范围分数的元素个数: 3) zrank key member :查询指定元素的分数在整个列表中的排名(从0开始) 4)zrange key start stop:获取集合中指定范围的元素,按分数升序排序输出 5)zrevrange key start stop:获取集合中指定范围的元素,按分数降序排序输出 6)zincrby key score member:给指定的元素增加指定的分数 7) zrem key member:移除指定的元素 B:SortedSet应用场景

按照点击量排行: 1)、初始化数据: zadd post:good:sort 1000 post:91 1020 post:92 2)、首页推荐10个最热门的帖子 zrevrange post:good:sort 0 10 3), 给id为91的贴在增加30个点赞 zincrby post:good:sort 30 post:91 4)、从帖子点击量排行榜中移除id为91的帖子 zrem post:good:sort post:91

五:Hash 用来存对象(key,Map) A:Hash的常用操作 1),hset key field value:给一个hashes添加一个field和value; 2),hget key field:可以得到一个hashes中的某一个属性的值: 3),hgetall key:一次性取出一个hashes中所有的field和value,使用list输出,一个field,一个value有序输出; 4),hmset key field1 value1 field2 value2 field3 value3...:一次性的设置多个值(hashes multiple set) 5),hmget key field1 field2...:一次性的得到多个字段值(hashes multiple get),以列表形式返回; 6,hincrby key field number:给hashes的一个field的value增加一个值(integer),这个增加操作是原子操作: 7,hkeys key:得到一个key的所有fields字段,以list返回: 8,hdel key fieldh:删除hashes一个指定的filed; B:应用场景 1,hashes使用场景:替代string,以更合理的方式保存对象; 总结

把Redis常用的数据类型命令做了一个简单的整合,不好的望各路大神指点一二…



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3