一、vmware安装centos7后没有网卡
VMWare 12版本不提供32位安装程序,只有64位安装程序,如果在安装CentOS时,选择的是CentOS而不是CentOS 64位,则会出现CentOS启动后没有以太网卡的情况。
解释:
由于Vmware虚拟网卡和linux兼容问题导致驱动无法正常安装,默认的网卡类型不兼容
找到我们的Vmware虚拟机文件夹,将VMware 虚拟机配置 (.vmx),追加一条设置我们网卡类型ethernet0.virtualDev = "e1000"
原因
VMware都在虚拟客户机中提供的是古老的AMD PCNet10/100Mbps虚拟网卡,后来,VMware通过一种类似部分虚拟化的vmxnet优化虚拟网卡的方式提供了10/100 /1000Mbps性能,无疑性能更好。现在,VMware ESX Server已经可以提供基于Intel E1000的千兆虚拟网卡,从兼容性和性能的角度来看,E1000都是更好的选择。但似乎,在ESX/ESXi 3.5的图形界面中,都无法直接选择该网卡类型,需要手动配置。
类型可以选择多项
值为"e1000"指定网卡类型为Intel(R) PRO/1000
值为"vlance"指定网卡类型为AMD PCNet AM79C970A(默认为此项不兼容)
值为"vmxnet"指定网卡类型为VMware PCI Ethernet Adapter
【http://bbs.csdn.net/topics/390916173】
Centos7系统采用默认的配置安装,即最小安装,安装完是命令行模式。
二、centos7安装完后,网卡没有接入网络
ip a命令查看网卡信息,出现<NO-CARRIER,BROADCAST,MULTICAST,UP>,大概是网卡没有接入网络的意思。这个是在正确安装centos7系统的情况下出现了,排查后,重新安装vmware12版本,得以解决。
系统安装完后,网卡命名是这样的:
网络也无法ping通。
进入/etc/sysconfig/network-scripts/目录,利用vi或vim命令修改该网卡的配置文件,使之开机启动。
I进入编辑模式,将最后一行改为ONBOOT=yes,ESC退出编辑模式,输入:wq退出并保存。
重启网络服务:
Service network restart
即可连通网络。
三、redis介绍
REmote
DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets)
和 有序集合(sorted sets)等类型。
Redis官方网网站是:http://www.redis.io/,如下:
在Redis中,没有数据表的概念,也无须关心select、join、view等操作或功能,同时也不提供类似于int或varchar的数据字段。你面对的将是相对原始的数据集合及数据类型,Redis是基于key-value范式存储数据。
Redis 与其他 key - value 缓存产品有以下三个特点:
1、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
1、性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2、丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3、原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
4、丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis与其他key-value存储有什么不同?
1、Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
2、Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
四、Centos7系统安装redis
安装步骤如下:
1) 官网下载最新版本的压缩包:redis-3.2.3.tar.gz,命令行输入:
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
问题:centos7可能没有wget程序,需要安装,命令为:yum –y install wget。
下载完,可以在root用户下看到下载的压缩包,
2) 下载好压缩包,执行解压,命令如下:
tar xzf redis-3.2.3.tar.gz
解压完成,可以看到有redis-3.2.3文件,如下图:
3) 进入redis-3.2.3文件目录:cd redis-3.2.3
4) 执行编译命令:make
问题:编译的时候,可能缺少gcc编译工具,命令(yum –y install gcc)进行安装,安装完最好执行下(yum update),防止不兼容。
编译完成,会在redis-3.2.3的src目录下生成几个可执行文件
5) 编译完即可运行,执行src目录下的redis-server文件:./redis-server
6) 执行redis-cli文件进入redis的客户端。如下命令进入操作行界面:./redis-cli
其中:提示符:127.0.0.1是主机ip地址,6379指的是服务器运行的默认端口号。
五、Redis常用命令
(1) 字符串
常用命令:
set,get,decr,incr,mget 等。
应用场景:
String是最常用的一种数据类型,普通的key/value存储都可以归为此类,这里就不所做解释了。
实现方式:
String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。
以实际输入的命令为例
1) 建立键值对
Set mykey 1
2) 判断键是否存在
exists mykey
3) 删除键
del mykey
不存在则返回0
4) 查看所有的键
Keys *
5) 获得键值的数据类型
type foo
6) 获得键值对应的值
get foo
7) 自增
incr foo
foo原本的键值对1
但是运行type foo时,显示为string,增加特定数值
8) 使foo增加3
incrby foo 3
9) 自减
decr foo
10) 减小3个数值
decrby foo 3
11) 向尾部追加值
append mykey hehe
append mykey world
12) 获取字符串长度
strlen mykey
13) 同时设置多个键值对
mset mykey9 11 mykey8 8 mykey7 7
14) 同时获得多个键值对应内容
mget mykey9 mykey8 mykey7
(2)散列
常用命令:
hget,hset,hgetall 等。
应用场景
我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息:
用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,
Key仍然是用户ID, value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题。很好的解决了问题。
实现方式
上面已经说到Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
1)赋值和取值
hset car price 20
hget car price
同时赋值多个字段的值
hmset car price 500 name BMW
hmget cat price name
2)判断字段是否存在
hexists car price
3)只获得字段名
hkeys car
4)只获得字段值
hvals car
5)只获得字段数量
hlen key
(三)列表
常用命令:
lpush,rpush,lpop,rpop,lrange等。
应用场景:
Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现,比较好理解,这里不再重复。
实现方式:
Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。
1)向两边添加元素
lpush group 1 (向左边添加元素)
rpush group2 (向右边添加元素)
2)从两边弹出元素
lpop group (从左边弹出元素)
rpop group (从右边弹出元素)
3)获取列表中元素的个数
llen group
4) 获得列表片段
lrange group 0 3
lrange group -2 -1 (其中-2 -1 为负索引,这个也是可行的。-2代表倒数第二个元素,-1代表倒数第一个元素。特殊地:获取所有元素可以这么写)
lrange group 0 -1
5)删除列表中指定的值
lrem group count value
当count > 0,会从左边开始删除前count个值为value的元素
当count < 0,会从右边删除前|count|个值为value的元素
当count = 0,它会删除所有值为value的元素。
6)设置索引处的值
lset group 0 5
将group索引为0处的值改为5
7)获得索引处的值
lindex group 0
8) 只保留特定的字段
ltrim group 0 1
只保留索引0到1的值,其余的删除
9)向列表中插入元素
linsert group afert 2 5
从左边开始查询,找到数字2 在后面插入数字5
insert group before 2 5
从右边开始查询,招待数字2,在前面插入数字5
(四)集合
常用命令:
sadd,spop,smembers,sunion 等。
应用场景:
Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
实现方式:
set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。
1)添加元素
sadd hello 2 4 5
向集合中添加2 4 5元素,返回值是成功加入的元素数量
2)删除元素
srem hello 4 5
从集合中删除4 5,返回值是成功删除的元素数量
3)获得集合中所有元素
smembers hello
4)判断元素是否在集合中
sismember hello 2
判断2是否在集合hello中
5)集合的运算
差集
sdiff setA setB
返回值是集合,返回的是存在集合A中但是不存在集合B中的元素集合
交集
sinter setA setB
并集
sunion setA setB
6) 获得集合大小
scard setA
7)随机获得集合中的数字
srandmember setA
(五)有序集合
常用命令:
zadd,zrange,zrem,zcard等
使用场景:
Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
实现方式:
Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。
1)增加元素
增加时需要指定元素的分数和元素的名称
zadd score 89 Tom 45 Amy
分数不仅可以是证书,还可以是浮点数
zadd score 2.3 Mike
zadd score +ind Bob
2)获得元素分数
zscore score Tom
3)获得排名在某个范围内的元素列表
zrange score 0 2
带分数显示
zrange score 0 -1 withscores
4)获得指定分数范围的元素
zrangebyscore score 45 80
获得45分到80分的元素,闭区间,如果不像是闭区间,则可以在索引前面加上(
zrangebyscore score (45 80
5)取某几个值
zrangebyscore score(45 80 limit 0 3
取(45 80]之间的元素,从第一个开始,取3个
6)增加某个元素分数
zincrby score 5 Tom
给某个元素加5分
zincrby score -2 Tom
给某个元素减2分
7)给某个元素重新赋值分数
zadd score 22 Tom
8)获得集合中元素的数量
zcard score
9)获得指定分数范围内元素个数
zcount score 79 90
10)删除一个或多个元素
zrem score Tom
11)按照索引位置删除元素
zremrangebyrank score 0 1
它先会把它按照分数从小到大排列,然后删除索引位置的元素
12)按照分数删除元素
zremrangebyscore score 28 99
它会删除指定分数范围内的元素
13)获得元素排名
zrank score Tom
获得按照分数从小到大排列后,Tom的索引位置
反向排名
zrevrank score Tom
返回从大到小排列后,Tom的索引位置
六、安装centos具体步骤
在安装过程中,一直采用默认方式安装即可。
1.选择默认的自定义
2.点击下一步
3.点击下一步
4.选择centos64位
5.可更改安装目录
6.与性能有关,选用默认1就行,也可以改为2,性能更好些.
7.可选择内存,一般可选择2GB足够用。
8.这里采用默认的NAT(路由)方式进行网络连接
9.默认即可,点击下一步
10.默认即可,点击下一步
11.默认即可,点击下一步
12.默认即可,点击下一步
13.采用默认即可,点击下一步
14.低级完成
15.安装前,需要连接镜像iso文件进行安装
16.选择iso镜像文件
17.点击确定
18.进入centos的安装,选择中文
19.采用默认,点击开始安装,安装过程中只需要设置root用户的密码即可,安装完成,重启系统。