0%

redis安装

redis的全称叫做Remote Dictionary Server。

mac下直接安装

mac下安装redis还是很简单的(其实mac下安装什么软件都挺简单的,brew啥都有)

1
brew install redis

之后就是漫长的等待,下了好久,终于下载完了

修改redis.conf中的配置

1
2
# 后台启动
daemonize yes

启动服务端

1
redis-server

启动客户端

1
2
3
4
redis-cli

# 或者使用ip和端口连接
redis-cli -h 127.0.0.1 -p 6379

关闭服务端

1
redis-cli shutdown

齐活

可能使用brew安装之后你不知道东西都下载到哪了(我刚下载完就不知道去哪里找redis.conf文件)

可以使用 brew list redis来查看

使用redis的源码包安装

1
2
3
直接先make,
然后make install
就 可以了

redis下包含有

  • redis-benchmark:性能测试工具,测试Redis在你的系统及配置下的读写性能
  • redis-check-aof:用于修复出问题的AOF文件
  • redis-check-dump:用于修复出问题的dump.rdb文件
  • redis-cli:Redis命令行操作工具
  • redis-sentinel:Redis集群的管理工具
  • redis-server:Redis服务器启动程序

redis版本中版本号第二位如果是奇数,则为非稳定版本(如2.9、3.1)。如果是偶数则为稳定版本(如3.0、3.2)。当前奇数版本是下一个稳定版本的开发版本

NIO

NIO早在JDK1.4中就已经提出来了(JSR51),在JDK1.7中对NIO进行了补充类库NIO.2(JSR 203),NIO又叫Non-blocking IO,即非阻塞IO

同步非阻塞

阻塞与非阻塞的区别:

  • 阻塞时,在调用结果返回时,当前线程会被挂起,并在得到结果之后返回

    传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降

  • 非阻塞时,如不能立即得到结果,该调用不会阻塞当前线程,可以继续完成其他操作,只需要定时轮询查看处理状态

    Java NIO 是非阻塞模式的。当线程从某通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。线程通常将非阻塞 IO 的空闲时间用于在其他通道上执行 IO 操作,所以单独的线程可以管理多个输入和输出通道。因此,NIO 可以让服务器端使用一个或有限几个线程来同时处理连接到服务器端的所有客户端

阅读全文 »

用户进程发起请求,内核接收到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。

阅读全文 »

函数式编程

函数式编程强加了额外的约束,即所有数据必须是不可变的:设置一次,永不改变。将值传递给函数,该函数生成新值但从不修改自身外部的任何东西,不可变对象和无副作用范式解决了并发编程中最基本和最棘手的问题。

阅读全文 »