网站建设挣钱吗?,app怎么开发出来的,在哪里建网站比较好,现在企业做门户网站安装Redis
现在我们安装Redis 5#xff0c;Redis安装在Linux上面安装#xff0c;如果想在本机上面安装多个Redis的话#xff0c;就要使用Docker。
在Ubuntu上面安装#xff1a;
切换到root用户使用apt命令搜索相关的软件包#xff08;apt search redis#xff09;apt …安装Redis
现在我们安装Redis 5Redis安装在Linux上面安装如果想在本机上面安装多个Redis的话就要使用Docker。
在Ubuntu上面安装
切换到root用户使用apt命令搜索相关的软件包apt search redisapt install redis。通过netstat -anp | grep redis这个指令查看redis是否安装好了。默认端口为6379说明只能由当前主机的客户端访问跨主机访问不了。从进入cd /etc/redis进入redis的配置文件。。通过vim redis.config进行编辑把bind修改成再把protected mode切换成no重启服务器。使用redis自带的客户端连接服务器redis-clictrld退出客户端。 通过service redis-server status方式进行查看当前的redis状态。
配置文件的定义一个大的软件里面有很多定制化的功能我们可以通过开启或者关闭来定制化我们的功能。
Redis客户端
redis也是一个客户端服务器程序。也就是说redis的客户端和服务器之间是通过网络进行通信的redis客户端和服务器可以在一个主机上也可以不在一个主机上面。 redis自带了命令行客户端 如果想要使用其他的ip如下使用 图形化客户端
暂时用不到redis自带的客户端百分百能连接到我的客户端但是图形化客户端不一定。可能会经历很多的跳板机。
基于Redis的api自行开发的客户端
后边通过java程序的api调用进行自行开发redis
Redis快
redis的快是和mysql这种的相比比较快但是和内存中直接操作变量相比就慢不少。 使用hashmap是直接操作内存而redis是通过网络再操作内存。单机系统要不要用得看情况。搞个redis可以独立存储数据扩展分布式就要用redis。
Redis实战操作
redis服务器和客户端交互掌握常用的命令。使用redis的文档
Redis文档
Redis最核心的命令 get根据key取value
要进入redis-cli命令才能用redis的命令 如果查询了一个不存在的key的话就会得到一nil和null一个意思。 set把key和value存进去
set方法的key和value都是字符串 对于上述的key和value不需要加上引号就是表示字符串的类型并且redis中的命令不区分大小写redis可以就当作一个哈希表使用。 keys:看看有哪些key
pattern匹配
是匹配任意字符。 *匹配任意0个或者多个字符。 [ae]表示匹配a或者e给出固定选项 。 [^e]表示不匹配e这个字符只要不是e都行。[a~e]a到e都可以abcde都可以。
注意事项keys命令时间复杂度是on要遍历所有的on在生产环境上静止使用特别是keys *,查询redis中所有的keyredis实际上执行命令只是单线程导致执行keys时间很长导致redis被阻塞。
Redis经常用作缓存是替mysql负重前行的人如果redis被阻塞了其他访问数据库的线程就会直接访问mysql。mysql由于一大堆请求过来容易挂掉。 exists判断key是否存在
返回值是key存在的个数针对多个key。o1复杂度。
redis组织key的形式是以哈希表的形式。哈希表查询的复杂度是o1。
redis支持很多数据结构就是value有很多数据结构。
通过exists加上key的形式看有几个value。 封装和分用
进行网络通信要经历应用层到物理层层次层封装类似于装快递接收方要从物理层层层分用类似于收快递拆快递。
客户端和服务器不在一个主机上可能隔着比较远那么客户端发起的redis请求 。所以redis尽量一次命令操作多个key。 deldelete删除指定的key
可以删除一个或者多个可以存在可能不存在时间复杂度是o1。他的返回值也是删除的个数。删除成功几个返回几个。redis中的del相比mysql中的删除危险性少了很多redis实际上经常是作为缓存redis只是存一个热点数据在mysql中也存了一份。 但是不要全删了会导致数据库的访问量剧增。 EXPIRE(秒)给指定的key设定过期时间
此时设置的key要对已经存在的key进行设置 此时等待过期之后就发现没有了。 key的存活时间超过指定时间会被删除手机验证码验证码超过多久就失效生成验证码的时候同时设定过期时间存储在redis中如果超过的话就删去。
基于redis实现分布式锁使用的时候避免出现不能正确解锁的时候就在加锁的时候进行加上一个过期时间即使出现极端情况过期删去key value的时候就相当于被解锁了。 ttltime to live
pttl和ttl一样
查看当前key的过期时间还剩下多少 当返回-1的时候代表没有设置过期时间-2表示key不存在。 type
返回key所对应的value的类型比如这里的lpush左侧插入key6一个数组111222这时候返回的type类型就行list。时间复杂度o(1)。 生产环境线上环境
未来在工作中会遇到的几个环境
开发环境直接在我的笔记本上面开发有可能在服务器。
测试环境实际上和开发环境差不多也可能在服务器。
线上环境外界用户能访问到的线上挂了一定会对用户访问产生问题。
redis针对key的过期策略如何实现面试题
一个redis中存在很多key很多都有过期时间redis怎么知道哪些要过期被删除哪些不用被删除。key很多的话遍历所有的key就不合适。
定期删除
每次抽取一部分进行验证过期保证抽取检查过程足够快。
redis是一个单线程主要的任务都是在主线程之中完成如果抽取检查的时间太长了那么处理命令的就会被阻塞了。
惰性删除
假设key已经到时间了但是暂时还没删除紧接着后面有一次访问发现key过期了所以这次访问就会使得redis触发删除同时返回空值。
redis为了对定期删除删除不干净还使用了一系列的内存淘汰机制。
强制删除内存淘汰机制
如果redis使用的内存已经达到maxmemory配置的值时会触发强制清理策略。
定时器拓展redis都没有采取
基于优先级队列按照指定的优先级
在redis中就可以通过过期时间越早优先级越高很多的key都设置了时间过期时间早就先出任务。此时就要扫描队首元素。扫描的时候不可能一直使用while不然就会忙等等待队首时间快到了就进行唤醒。如果有一个新的任务的话就唤醒一下刚刚的线程重现检查一下队首元素再根据时间差距调整阻塞时间。
基于时间轮
把时间轮划分成很多小段 每次到时间就会滚到响应的时间尝试执行进行循环放置。到时间了就放置没到时间就循环放置。如果时间太长就会一圈一圈循环直到找到。