Redis02-架构及简单使用

系列文章目录

Redis01 基础及安装
Redis02-架构及简单使用
Redis03-数据类型:应用及实操
Redis04-进阶使用(管道、发布/订阅)
Redis05-进阶使用(事务)
Redis06-进阶使用(过期 expire)
Redis07-RDB和AOF

Redis架构

首先要明确一个概念:redis是单线程,单实例
那么为什么并发那么多,redis依旧很快呢?因为redis调用了系统内核的epoll

IO发展小插曲:

​ Linux有内核kernal,客户端进行连接的时候,首先到达的是kernal。我们使用一个线程/进程 进行调用read和write函数。因为socket在这个时期是blocking(阻塞的),遇到高并发,就会阻塞,即我们所说的BIO。

​ 随着kernal的发展,我们可以使用客户端进行轮询访问,即NIO,进线不会阻塞,但还是同步的。

​ 但是,我们如果打进1000个线程访问,那么成本就会很大。所以出现了select,我们可以直接传1000个文件描述符,根据返回,再去调read函数。这个叫做多路复用的NIO。

但是select还是需要全量查询fds,所以就有了epoll。这时候在内存中有一个共享空间。(本质是红黑树+链表+mmap空间映射),我们将1000个文件描述符写进共享空间,如果我们的数据有返回,那么加入链表,我们从链表取出调用read进行读取。epoll是同步,非阻塞的多路复用。

ps:关于IO的系列后续再写

Redis简单使用

## 命令行使用
## 启动redis
service redis_6379 start

## 打开一个redis 客户端
redis-cli			
exit				## 退出
redis-cli -7 		## 连接redis7号库
select db 			## 选择库(0-16)
keys * 				## 查看所有的keys
redis-cli --raw  	## 根据编码集对value进行格式化

help @string		## 查询所有string的操作
help @list			## 查询所有list的操作
help @set			## 查询所有set的操作
help @sorted_set	## 查询所有sorted_set的操作
help @hash			## 查询所有hash的操作

set k v 			## 设置一个k-v
set k1 v nx         ## 只有当k1不存在时候才能操作成功,设置value
set k2 v xx 		## 只有当k1存在的时候才能成功,更新value
mset k1 v1 k2 v2 	## 可以进行设置多个值
get k 				## 返回一个v,没有返回nil
mget k1 k2 k3 		## 获取多个v
getrange k 0 -1 	## 获取一个索引从start到end,双闭合的区间,redis存在反向索引
setrange k 2 v 		## 更新区间范围,我们可以从start的索引开始,更新value数据
del key   			## 删除一条kv数据
keys pattern 		## 用正则查询key,常用keys *
flushdb 			## 清空db 还有一个flushall
append k v 			## 给k的数据进行追加v这个数据
type k 				## 查看value是什么类型
object encoding k 	## 查看v的编码类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值