Redis学习笔记01——Redis核心数据结构

一、String

SET key value
GET KEY

分布式锁:
SETNX product:1001 true
SETNX product:1001 true.
DEL product:1001
SET product:1001 true ex 10 nx //防止程序意外终止导致死锁

应用场景:统计网站读取次数,统计成功率和失败率

incr ysy 每次递增1个

大数据量场景下,可以先内存++,到了1000再去操作增加redis;

二、Hash

优点:1)同类数据归类整合存储,方便数据管理;
2)相比string操作消耗内存和cpu更小;
3)相比string存储更节省空间;

缺点:1)过期功能不能使用在field上,只能用在key上;
2)redis集群架构下不适合大规模使用;

hset cart:1001 1088 1
hincrby cart:1001 1088 1

127.0.0.1:6379> hset cart:1001 1088 1
(integer) 1
127.0.0.1:6379> hincrby cart:1001 1088 1
(integer) 2
127.0.0.1:6379> hincrby cart:1001 1089 1
(integer) 1
127.0.0.1:6379> hincrby cart:1001 1090 1
(integer) 1
127.0.0.1:6379> hgetall  cart:1001
1) "1088"
2) "2"
3) "1089"
4) "1"
5) "1090"
6) "1"
127.0.0.1:6379> hdel cart:1001 1088
(integer) 1
127.0.0.1:6379> hgetall  cart:1001
1) "1089"
2) "1"
3) "1090"
4) "1"

注意避免big—key的场景

应用场景:电商购物车

优点:
1)同类数据归类整合存储,
2)相比string消耗内存和cpu更低

缺点:
1)过期功能不能使用在filed上,只能用在key上
2)Redis集群架构下,不适合大规模哦使用

三、list

lrange key start stop: 从指定位置那一定范围内的数据

实现栈的结构:lpush和lpop
队列: lpush rpop
阻塞队列:lpush brpop
lrange:返回列表key中指定区间内的元素,去见以偏移量start和stop指定。

场景:

微博和微信公众号消息流

四、set

sadd: 添加集合成员
SMEMBERS: 查看所有的成员
SRANDMEMBER: 从集合中随机取出一个数据,支持重复中奖
SPOP: 从集合中随机取出一个数据,不支持重复中奖
SREM: 从集合中删除数据

127.0.0.1:6379> sadd act:1010 1
(integer) 1
127.0.0.1:6379> sadd act:1010 2
(integer) 1
127.0.0.1:6379> sadd act:1010 3
(integer) 1
127.0.0.1:6379> sadd act:1010 4
(integer) 1
127.0.0.1:6379> sadd act:1010 5
(integer) 1
127.0.0.1:6379> sadd act:1010 6
(integer) 1
127.0.0.1:6379> SMEMBERS
(error) ERR wrong number of arguments for 'smembers' command
127.0.0.1:6379> SMEMBERS act:1010
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"

127.0.0.1:6379> SPOP act:1010 3
1) "6"
2) "2"
3) "3"

场景:微信抽奖,微信微博点赞,收藏,标签

参与抽奖: sadd
抽奖:SRANDMEMBER或者SPOP
在这里插入图片描述

集合操作

sinter:交集
sunion:并集
sdiff:差集

集合操作实现微博微信关注模型,redis可以实现复杂的关系模型,数据库实现难度很大

1)ysy关注的人
ysyset——{ysy1,ysy2,qyh}

2)qyh关注的人
qyhset——{ysy,ysy1,ysy2,ysy3,ysy4}

3)zs关注的人
zsset——{ysy,qyh,qyh1,qyh2,ysy1,ysy3}

ysy和qyh共同关注的人:
sinter ysyset qyhset

ysy关注的人,也关注了qyh
sismember zsset qyh

ysy可能认识的人:
sdiff ysyset qyhset

五、zset

使用场景

zset集合操作实现排行榜
1)点击新闻
zincrby hotnews:20201110 1 守护中国
2)展示当日前十排行
zrevrange hotnews:20201110 0 9 withscores
3)七日搜索排行榜
zunionstore hotnews:20201110-hotnews:20201116 7
4)展示七日排行前十
zrevrange hotnews:20201110-20201118 0 9 withscores

redis单线程的概念

redis针对客户端发起的操作,是单线程的;持久化、异步删除、集群数据同步由客户端额外的线程处理

可以执行redis-benchmark命令进行压力测试

./redis-benchmark get
====== get ======
  100000 requests completed in 2.00 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.99% <= 1 milliseconds
100.00% <= 1 milliseconds
50100.20 requests per second

info命令

查看redis运行信息,分为9块。

在这里插入图片描述

遍历命令

keys

尽量少用,遇到bigkey容容易造成阻塞;

scan

SCAN cursor 【MATCH pattern】 【COUNTcount】

scan 0 match key99* count 1000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值