Redis基础学习之原理和使用
1.Redis的原理
Redis是单进程、单线程、单实例处理用户请求的,在高并发请求的时候为何还是会处理的很快?原因Redis是使用Linux物理机内核中epoll这种多路复用的系统调用概念进行处理的。而epoll概念是一种物理机内核的系统调用概念,是同步非阻塞的多路复用的,是通过遍历哪些有数据就去使用谁。由于redis是单进程单实例的,在处理请求时是通过epoll将请求进行排列成一个链表,然后按顺序进行使用。
ps -fe | grep redis 查看Redis的启动信息,比如端口号等信息。
redis-cli来启动客户端,每个redis默认是有16个互相隔离的库组成,可通过加参数-n,比如 redis-cli -n 0 访问0号库;由于一台物理机中可以存在多个redis进行 可以通过 -p 参数指定要启动的端口号的redis进程
2.Redis的使用
2.1 Redis默认的16个互相隔离的库
2.1.1 举个栗子,给1号库设置库key为test111,值为12345,执行的指令是 set test111:1 12345
此时可以看到通过设置key为test111,并且通过冒号指定是存入1号库,直接访问时是访问的0号库,所以会出现nil访问不到的情况,改为test111:1查询1号库就能看到我们设定的值12345了,再次也验证了库是互相隔离的。
2.1.2 如何访问指定库
可以通过select 指定库的编号进行访问,比如访问2号库,执行指令是select 2,再执行get test111:1,可以看到并没有值nil,再次也验证了库是互相隔离的。
2.1.3 查看所有的key值,执行指令是 key *
2.2 常用的指令
2.2.1 FLUSHALL或者 FLUSHDB是清库操作,谨慎操作!
2.3 key中的相关方法
在判断类型的时候,不需要将数取出来再进行判断,可以在key的时候就进行判断规避异常
2.3.1 type key查看key对应的value值的类型
2.3.2 encoding 是判断value中具体的类型,因为set和get是string类型组中的方法,所以通过set设置的值他的大类型肯定是string,但是在string大类型下面还分为字符串、数值、bitmap三类,可以通过 obeject encoding查看具体的类型。(emstr是字符串类型、int是数值类型)
在string大类型下的不同类型也有他们对应的不同方法
2.3.3 string类型中的int数值类型
2.3.3.1 自增( +1 ) 和自减( -1 )
可以通过incr 自增指令执行自增+1操作,可以通过decr自减指令执行自减-1操作,但首先需要是数值类型,否则会报错,这也是redis提高效率的一种方式,在开始设置key的时候就存上对应的类型,在value值设置的时候也会保存对应的value的类型,如果类型不匹配则直接报错,规避类型处理错误。
2.3.3.2 使用指令incrby key value 设置给key对应的value增加具体的数值,使用指令decrby key value 设置给key对应的value减少具体的数值
2.3.3.3 在使用一些方法的时候会使value的类型发生变化(比如append),而另一些方法则会使value的类型固化回方法能够执行的类型(比如incr)
- 点赞
- 收藏
- 关注作者
评论(0)