博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis常用数据结构及使用场景
阅读量:4578 次
发布时间:2019-06-08

本文共 5329 字,大约阅读时间需要 17 分钟。

Redis

一:Redis常用数据结构

1:String - 字符串

1.1 数据结构

Key-Value

1.2 常用命令

字符串常用操作1:SET KEY VALUE   // 存入字符串键值对 eg: SET name zhansan2:GET KEY  // 获取一个字符串键值  eg: GET name3::MSET KEY VALUE  [KEY VALUE]   //批量存储字符串键值  eg: MSET user:2:name zhansan user:2:age 204: MGET KEY [KEY]   //批量获取字符串键值  eg: Mget user:1:name user:1:age5:SETNX KEY VALUE  //存入一个不存在的字符串键值 6:DEL KEY [KEY]   //删除一个健  eg: del name 7:EXPIRE KEY SECONDS  //设置一个健的过期时间  eg: expire name 3原子加减1:INCR KEY  //将KEY中储存的数字值加1 eg:  incr age 12:DECR KEY  //将KEY中储存的数字值减1 eg: decr age 13:INCRBY KEY INCREMENT  //将KEY中储存的数字值加  eg: incrby  ment 1004:DECRTY KEY INCREMENT  //将KEY 中储存的数字值减  eg:  decrby  ment 50

2:Hash - 哈希

2.1 数据结构

Key filed1 value1 [ field value2]

2.2 常用命令

1:HSET KEY FIELD VALUE   //存储一个hash表的key的键值  eg:hset  product apple 102: HGET KEY FIELD 	//获取一个hash表key对应的field值  eg:hget product apple3:HMSET KEY FIELD VALUE [FIELD VALUE	] //批量存储多个key的键值 eg: hmset product xihongshi 20 xigua 3304::HMGET KEY FIELD [FIELD]	 //批量存储多个key的键值 eg: hmget product xihongshi  xigua5: HSETNX KEY FIELD VALUE //	存储一个不存在的哈希表KEY 的键值 eg: hsetnx order zhansan 106:HDEL KEY FIELD [FIELD] //	删除hash表对应key的field键值 eg: hdel order zhansan7:HLEN KEY //	返回hash 表key中的field 的数量  eg: hlen product8:HGETALL KEY //	返回hash表中所有的键值   eg:hgetall product 9:HINCRBY KEY FIELD INCREMENT 	//为hash表key中的field键的值加上增量increment  eg:hincrby product xihongshi 30

3:List - 列表

3.1 数据结构

Key-Value [value value]

3.2 常用命令

1:LPUSH KEY VALUE [VALUE...]    // 将一个或多个值插入到key列表的左边  eg:lpush age 102:LPOP KEY   //移除并返回key列表最左边的元素  eg: lpop age3: RPUSH KEY VALUE [VALUE...] // 将一个或多个值插入到key列表的右边 eg:rpush age 234: RPOP KEY  // 移除并返回key列表最右边的元素 eg:rpop age5: LRANGE KEY STAT STOP  // 返回列表中指定区间的元素  eg:lrage age 0 106: BLPOP KEY [KEY] TIMEOUT  // 从key列表左边弹出一个元素,若该列表中没有元素,阻塞等待timeout秒,若timeour等于0,则一直阻塞等待 eg: blpop agee 07: BRPOP KEY [KEY] TIMEOUT  //从key列表中右边弹出一个元素,若该列表中没有元素,阻塞等待timeou秒,若timeour等于0,则一直阻塞等待 brpop agee 0

4:Set - 集合

4.1 数据结构

Key-member [member...]

4.2 常用命令

set常用操作1:SADD KEY MEMBER [MEMBER]  // 往集合key中存入元素,若元素存在则忽略,若key不存在则新建  eg: sadd people zhansan lisi    sadd city shanghai shenzheng chendu    sadd addr gansu guangdong zhaoqing2:SREN KEY MEMBER [MEMBER]  //从集合key中删除元素   eg: srem people zhansan3:SMEMBERS KEY  // 获取集合中的所有元素  eg: smembers people4:SCARD KEY  // 获取集合key中元素的个数   eg: scard people5:SISMEMBER KEY MEMBER // 判断members元素是否存在于集合key中  eg: sismember people wangwu  返回1表示存在、返回0表示不存在6:SRANDMEMBER KEY [COUNT] // 从集合key中选出count个元素、元素不从key中删除   eg: srandmember people 17:SPOP KEY [COUNT]  // 从集合key中选出count个元素,元素从key中删除  spop people 1set 运算操作1:SINTER KEY [KEY...]  //交集运算   eg:sinter people city2:SINTERSTOR DESTINATION KEY [KEY]  // 将交集结果存入新集合destination中  eg: sinterstore age people city3:SUNION KEY [KEY]  // 并集运算   eg: sunion people city4: SUNIONSTORE DESTINATION KEY [KEY ] //将并集结果存入新集合destination中  eg: sunion  name people city5:SDIFF KEY [KEY] // 差集运算  eg: sdiff people city6:SDIFFSTORE DESTINATION KEY [KEY]  //将差集结果存入新集合destination中  eg:sdiffstore fangzi people city

5:Zset(sorter set)- 有序集合

5.1 数据结构

Key-Valu

5.2 常用命令

1:ZADD key score1 member1 [score2 member2]  //向有序集合添加一个或多个成员,或者更新已存在成员的分数  eg: zadd hotnewwanggang 1  "守护香港"  2  " 智慧养老"  7  "天下无敌"  4  “陆嘉怡”2:ZCARD key //获取有序集合的成员数  3:ZINCRBY key increment member //有序集合中对指定成员的分数加上增量 increment  eg:zincrby hotnew:0823 1 守护香港4:ZREVRANGE key start stop [WITHSCORES]  //返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序  eg: zrevrange hotnewwanggang 0 25:ZUNIONSTORE destination numkeys key [key ...]  计算给定的一个或多个有序集的并集,并存储在新的 key 中

二:Redis数据机构使用场景

1:字符串使用场景

1.1 :单值存储

set name zhangsanset user:3 (name:zhansan age:20)----get name

1.2:对象存储

mset user:1:name zhansan user:1:age 20 user:1:pwd 40mget user:1:name user:1:age user:1:pwdmset name zhang  age 20 pwd 123mget name age pwd

1.3:分布式锁

setnx product:10001:name apple  返回1 代表获取锁成功、返回0 代表获取锁失败--- 执行业务操作---del prodcut:1003set pruduct:1001 true ex 10 nx

1.4:计数器

incr article:readcount:1001  统计文章阅读数get article:readcount:1001  获取文章阅读数

1.5:web集群session共享

web session+redis 实现集群共享    实现web集群下session共享问题

1.6:分布式系统全局序列号

incrby id 10 批量生成序列号用以提升性能

2:字符串使用场景

2.1 :电商购物车

以用户id为key 商品id为field商品数量为value购物车相关操作1:添加商品  hset wanggang juzi 102: 增加数量 hincrby wanggang juzi 13: 商品总数 hlen wanggang4: 删除商品  hdel wanggang juzi5: 获取购物车所有商品  hgetall wanggang

3:List使用场景

3.1 :常用数据结构

Stack(栈) = LPUSH + LPOP  --FILO  先进后出Queue(队列) = LPUSH _RPIP  --FIFO  先进先出Blocking MQ(阻塞队列) = LPUSH+ BRPOP

3.2: 微博消息和公众号消息

zhangsan 关注了 lisi、wangwu等1:lisi 发微博  lpush msg:zhansan 1001  --1001为消息id2: wangwu发微博 lpush msg:zhansan 10023:查看最新微博消息lrange msg:zhangsan 0 5

4:Set使用场景

4.1 :微博微信关注模型

1:zhangsan关注的人zhangsanSet -->  sadd zhansan a  b c2:lisi关注的人lisiSet -->  sadd lisi b c d3:wangwu关注的人wangwuSet-->   sadd wangwu c d e4:zhansan和lisi共同关注的人sinter zhangsan lisi5:zhangsan关注的人也关注zhaoliusismember lisi zhaoliusismember wangwu zhaoliu6:zhansan可能认识的人sdiff lisi wangwu

4.2: 微信抽奖小程序

1:点击参与抽奖加入集合sadd choujiang zhansan2:查看参与抽奖的用户smember choujiang3:抽取count名中奖者srandmember choujiang count /spop choujiang count

4.3: 微信微博点赞、收藏、标签

1:点赞sadd like:消息id  zhansan 用户id2:取消点赞srem like zhansan 3:检查用户是否点过赞sismember like zhansan4:获取点赞的用户列表smember like5:获取点赞用户数scard like

4.4: 实现电商商品筛选

5:Zset使用场景

5.1 :实现排行榜

1:点击新闻incrby hotnew:0823 1 守护香港2:展示当日排行榜前10zrevrange hotnewwanggang 0 103:七日搜索榜单计算zunionstore hotnews0809 7  hounews0807 hotnews08034:展示七日排行榜前10zrevrange hotnews0809 0 10

转载地址:http://dxqms.baihongyu.com/

你可能感兴趣的文章
vue学习之四组件系统
查看>>
pwa介绍学习
查看>>
go 实现简单的加权分配
查看>>
PhpExcel中文帮助手册|PhpExcel使用方法
查看>>
Linux下安装rpm出现error: Failed dependencies
查看>>
Chapter 6 排序
查看>>
JAVA的StringBuffer类
查看>>
通用的运营商/数字在C#
查看>>
学习Android过程中遇到的未解决问题(个人笔记,细节补充,随时更新)
查看>>
7kyu Jaden Casing Strings
查看>>
主流编程语言的大概方向(个人理解)
查看>>
2015 HUAS Provincial Select Contest #1 A
查看>>
C++string与int的相互转换(使用C++11)
查看>>
[Leetcode]旋转链表
查看>>
UNIX网络编程 -- -- 一个简单的时间获取客户程序
查看>>
使用dbghelp生成dump文件以及事后调试分析
查看>>
日本出行
查看>>
[bzoj3531][Sdoi2014]旅行
查看>>
【转】 NSString什么时候用copy,什么时候用strong
查看>>
C#异形窗体
查看>>