0
点赞
收藏
分享

微信扫一扫

Redis简单说

七公子706 2022-04-13 阅读 114
redis

使用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)

分布式集群架构中的session分离。

聊天室的在线好友列表。

任务队列。(秒杀、抢购、12306等等)

应用排行榜。

网站访问统计。

数据过期处理(可以精确到毫秒)

数据类型及操作

操作:不管什么类型数据存储,都有一个名字。比如字符串:set name1 12; hset mapName1 key1 value1等。没名字怎么获取呢对不白

字符串:C语言中的char[],结束\0。操作:增删改 exist length判断。

1. 如果value是整数,可以递增,递减操作(incr,decr )

2. 向尾部追加(append)

3. 命令类似:set get del strlen

Hash:

字符值只能是string,结构如下,操作:可以用“键 字段名称” 来对值进行操作(类似String)

1. 命令在string类型命令前面添加:h,如:hset hget hdel hexists hincrinby

List类型:有序双向链表

操作:双向列表的操作,添加(左边添加lpush,右边添加rpush);弹出(获取并删除的意思,左边弹出lpop,右边弹出rpop) 获取一定区间下标元素(lrange list1 0 2) ; 长度(string命令的基础上加l,llen);

SET类型:没有重复数据,无序

命令:在string命令基础上加了s,如:sadd。增加,删除,所有元素,判断元素存在不,元素个数,随机弹出一个数据

集合操作:集合操作如:差集,并集,交集。 如一个url访问需要的权限和一个人有的权限做交集,如果交集有值说明,有权限,否则没有权限。

Sorted Set类型:在Set基础上给每个元素增加一个权重,并根据这个权重排序

同List区别:

1. List 两头操作快,比较长后中间的查起来需要废点时间,SortedSet 操作哪都一样

2. SortedSet更废内存,且比较容易调整顺序,设置不同分数就行。List 则只是排序不清楚具体位置

3. 都是有序的,且可以获取一定区间内的数据

时间设定

EXPIRE key seconds                  设置key的生存时间(单位:秒)key在多少秒后会自动删除

TTL key                                      查看key生于的生存时间

PERSIST key                               清除生存时间

PEXPIRE key milliseconds        生存时间设置单位为:毫秒

持久化

1. redis数据都在内存中存储,问题:宕机怎么办。

2. 持久化,然后重启的时候加载(大概时间:1G需要30s时间),问题:什么时候持久化

3. 两种持久化方式,A:AOF(append only file)在redis中插入一条,就持久化一条。 B:RDB,默认方式,满足一定条件后(时间维度,修改条数)进行持久化。

4. AOF当然可靠,效率低喽。RDB可能会损失一次的数据。 可以一种或者两种结合使用。问题:无论咋样 该机器磁盘损坏就没法恢复了

5. 主从,设置一个或者多个从slave机器,可以从主master中每次全部,或者增量复制。问题:这样数据是丢不了了,但master宕机后服务可能中断,或者应付不了那么多请求

6. 集群cluster,三台以上,如果半数master宕机,或者有master没有从slave(这个可以设置) 整个集群就不可用了。问题:这么多机器怎么分工存储呢

7. 根据对key使用hash算法crc16然后对 16384 求余数,当然16384每个数字对于一个槽位,每台master分这些槽位。 

8. 如果不小心删除有槽位的master怎么办? 回答: 删除不了,除非宕机。

9. 如果新添加一个主master咋办?回答:重新分配reshard槽位,可以手动分配,也可以自动分配。

举报

相关推荐

0 条评论