杂项
1.以太网布线的三种线:
直通(Straight-through),交叉(Cross-over)和全反(Rolled)。
EIA/TIA的布线标准中规定了两种双绞线的线序:568B与568A。
标准568A:
绿白--1,绿--2,橙白--3,蓝--4,蓝白--5,橙--6,棕白--7,棕--8
标准568B:
橙白--1,橙--2,绿白--3,蓝--4,蓝白--5,绿--6,棕白--7,棕--8
直通网线
直通网线主要用于不同端口之间的连接:例如
PC to Switch/Hub;
Router to Switch/Hub;
交叉网线
交叉网线一头为568A,一头为568B。即1和3互换,2和6互换。
交叉网线主要用于同类端口之间的连接:
例如
- Host to Host(两块网卡之间的连接,即两台计算机之间直接连接);
- Switch to Switch;
- Hub to Hub;
- Switch to Hub;
- Host to Router(PC的网卡和路由器的以太口的连接(这个有点特殊))。
全反线
反转电缆就是console线,又叫全反线,不属于以太技术。用于直接登录设备
企业级路由器、交换机,都有一个console口,用专用的console线缆连接登陆。空配置的设备,必须采用这种方法登陆,安全性高。console口通常就是RJ-45口,console线一边是RJ-45水晶头,一边是9针232串口,见图片。
总结:
用什么线,很好记,简单就是同类用交叉(因为它们的收发定义相同),不同类用直通。
主机和路由器有ip的算一类,hub(集线器)和交换机没有ip的算一类。
这样就好记了。
另外,新设备包括电脑网卡都支持跳线,就是自动识别线缆并切换为正确模式。在这种设备之间就无所谓交叉线和直通线了。
使用举例:
使用直通线的情况:
- 将交换机或HUB与路由器连接;
- 计算机(包括服务器和工作站)与交换机或HUB连接。
使用交叉线的情况:
1. 交换机与交换机之间通过UPLINKS口连接;
2. HUB与交换机连接;
3. HUB与HUB之间连接;
4. 两台PC直接相连(网卡对网卡);
5. 路由器接口与其它路由器接口的连接;
6. Ethernet接口的ADSL Modem连接到PC机的网卡接口。
2.地址解析协议,即ARP(Address Resolution Protocol)
是根据IP地址获取物理地址的一个TCP/IP协议。
3.高可用(HA)
4.Local Traffic Manager本地流量管理器
5.ISP(Internet Service Provider)
互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商。
Redis
安装
window版下载(需翻墙)
https://github.com/MSOpenTech/redis/releases
教程
http://www.runoob.com/redis/redis-install.html
http://www.yiibai.com/redis/csharp_redis.html(结合c#)
3.2版本 安装msi安装包,自动安装redis服务,设置环境变量,使用redis-cli即可登陆,如何修改host和port未知
配置
读取
使用命令 redis-cli 登陆
config get 配置名(*表示全部)
编辑
config set 配置名 新值
其他参数用时再查
数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
<pre>
redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"
</pre>
Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
实例
<pre>
127.0.0.1:6379> HMSET user:1 username runoob password runoob points 200
OK
127.0.0.1:6379> HGETALL user:1
"username"
"runoob"
"password"
"runoob"
"points"
"200"
</pre>
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HGETALL 命令,user:1 为键值。
每个 hash 可以存储 232 -1 键值对(40多亿)。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
实例
<pre>
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
"rabitmq"
"mongodb"
"redis"
redis 127.0.0.1:6379>
</pre>
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
Set(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
sadd key member
注意:根据集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
常用命令
redis-cli -h host -p port -a password
以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。
redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
实例
以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为 redisChat:
redis 127.0.0.1:6379> SUBSCRIBE redisChat
现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
以下是一个事务的例子, 它先以** MULTI** 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
<pre>
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
OK
"Mastering C++ in 21 days"
(integer) 3
"Mastering Series"
"C++"
"Programming"
</pre>
脚本
Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
<pre>
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
"key1"
"key2"
"first"
"second"
</pre>
链接
Redis 连接命令主要是用于连接 redis 服务。
设置密码
<code>redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"</code>
实例
以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行:
<pre>redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG</pre>
数据备份与恢复
备份
save
Redis SAVE 命令用于创建当前数据库的备份。
语法
redis Save 命令基本语法如下:
redis 127.0.0.1:6379> SAVE
实例
redis 127.0.0.1:6379> SAVE
OK
该命令将在 redis 安装目录中创建dump.rdb文件。
Bgsave
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
实例
127.0.0.1:6379> BGSAVE
Background saving started
恢复数据
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
redis 127.0.0.1:6379> CONFIG GET dir
- "dir"
- "/usr/local/redis/bin"
以上命令 CONFIG GET dir 输出的 redis 安装目录为 /usr/local/redis/bin。