第四章 Redis基础
数据库分类
-
关系型数据库(采用关系模型来组织数据的数据库,主要用于存储格式化的数据结构)
-
4.1Redis简介
开源的key-value数据库,属于NoSQL数据库,按照键值对的结构进行存储。数据缓存在内存中,并基于内存操作,性能较高。支持的value类型很多,包括string list set zset hash,使业务能高效和原子地访问这些数据库结构并且不需要关心持久储存的问题,从架构上解决了问题。 数据持久化就是讲内存的数据保存到磁盘中!
优势
Redis会周期性地把更新的数据写入磁盘或把修改操作写入追加的记录文件,并且在此基础上实现了主从同步,数据可以由主服务器同步到任意数量的从服务器上。保证了数据服务的高性能和高可用。
Linux环境Redis安装及配置
4.2.1 Redis服务的安装环境
-
服务器操作系统: CentOS 6.5 64位
-
Redis 版本:3.2.8
4.2.2 安装Redis
将redis-3.2.8.tar.gzip文件通过FTP工具复制至Linux服务器的某目标,之后解压
输入 tar -zxvf redis-3.2.8.tar.gzip
linux操作系统
1991年
开发者: 林纳斯.托瓦茨
免费开源的linux
一周开发 git 控版开源软件
GIT (分布式版本控制系统) 编辑 Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。[1] Git的读音为/gt/。 Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理
4.2.4 配置Redis
-
设置内存分配策略
在proc/sys/vm/overcommit_memory文件中指定内存分配策略。此为可选策略,可根据服务器的实际情况设置,可选值包括0,1,2
0,表示内核将检查应用的内存申请是否合理,会拒绝明显不合理的单词内存申请,如一次申请超过(空闲内存+空闲交换空间+页面缓存+SLAB中可回收部分)总和的内存;
1.表示内核允许申请所有的物理内存,而不管当前的内存状态如何;
2.表示不允许内存超载,内核不允许申请超过[交换空间+物理内存课配置量(默认为50%)]总和的内存。
注意
Redis在转储数据的时候,会派生出一个子类,如果内存申请被拒绝,往往会造成Redis的服务器的宕(dang4声)机或I/O负载过高,但是进程往往实际使用的内存往往比申请的少,所有较为优化的策略是设置为1.(虽然会增大内存超载的可能性,但却可以增强大量使用内存的任务的性能)
<!--命令-->echo 1 > /proc/sys/vm/overcommit_memory (需要使用root账户)
-
开放Redis端口
Redis默认占用6379端口,需要在防火墙中设置开放对此端口的访问
(1) .编辑防火墙配置文件
命令 vim /etc/sysconfig/iptables
(2)添加一下规则
-A INPUT -m state NEW -m -p tcp -p tcp --dport 6379 -j -ACCEPT
(3) 重新加载规则
service iptables restart
-
设置Redis配置文件
vim /usr/local/redis-3.2.8/etc/redis/conf
设置Redis服务可以监听的请求IP地址
bind 127.0.0.1 ::1
设置Redis监听的端口 默认6379
设置Redis是否作为守护进程(后台服务)运行(daemonize)
在redis.conf中该指令默认设置为daemonize no,即在默认情况下,Redis不作为守护进程,改回来daemonize yes
设置Redis的日志文件路径
使用logfile指定Redis的日志文件 logfile "usr/local/redis-3.2.8/log/redis/log"
设置Redis数据库的数量
datebases可以配置,默认16,对应的dbid范围是0~15 dbid选择要使用的数据库。数据库实际
都存储在同一个数据文件中
设置Redis的工作目录
dir data/redisdata/
设置访问密码
Redis常用命令
-
auth命令:
在访问受密码保护的Redis服务时,客户端首先需要进行密码认证,否则无权执行其他Redis命令
+ auth password
-
set命令
Redis是以key-value的格式来存储数据的,而set命令既被用来设置key以保存value(String类型)
+ set key value [ex seconds] [px milliseconds] [nx] [xx]
set命令的参数介绍如下:
ex seconds:设置指定的过期时间seconds,seconds是以秒为单位的数字
px milliseconds:设置指定的过期时间milliseconds,milliseconds是以毫秒为单位的数字
nx:仅在key不存在时刻设置key
xx:仅在key存在时刻设置key
- 如果set已经保存了一个值,则set执行命令执行成功时,无论类型如何,都会被覆盖
-
get命令
获取key对应的value。如果key不存在,则返回特殊值nil。如果存储的key中的值不值字符串,则返回错误,因为get仅处理字符串值。
+ get key
-
exists命令:
判断指定的key是否存在。
+ exists key1 [key2.....]
仅指定一个key时,如果key存在则返回1,不存在返回0。当指定多个key时,它返回存在key的总数
-
keys命令:
+ keys pattern
支持常用模式如下:
h?llo:匹配单个字符,如hello、hallo、hxllo等
h*llo:匹配任意字符,如hllo、heeeello等
h[ae]llo:包含一个指定字符,如hello或hallo
haello:包含除指定字符以外的一个字符,如hbool、hcllo等
h[a-c]llo:匹配指定范围内的一个字符,如hallo、hbllo和hcllo。
-
del命令:
+ del key1 [key2....]
-
rename命令:
+ rename key newkey
将key重命名为new key ,当key不存在的时候返回错误。如果newkey已经存在,则会被覆盖
-
expire命令:
+ expire key timeout
在key上设置超时时间timeout,时间以秒为单位,若key超时将被自动删除。若设置成功则返回1,若key不存在则返回0
+ 如果设置一个非正的timeout参数,将导致key被删除 + 对已经设置了超时时间的key代用expire命令,该key的超时时间将更新为新值 + 删除key或覆盖key的内容会被清除该key的超时设置,如del、set操作 + 如果使用rename命令重命名key,则相关的剩余生存时间将转移到新key.
-
ttl命令:
+ ttl key
以秒为单位返回key的剩余生存时间
-
persist命令:
+ persist key
删除key上现有的超时设置,是key变为永久有效。如果超时设置被删除,则返回1,如果key不存在或没有关联的超时设置,则返回0
-
select命令:
+ select dbid
-
flushdb命令:
+ flushdb
该命令用于删除当前所选数据中的所有key
-
flushall命令
+ flushall
该命令用于删除现有数据库中的key,而不仅仅是当前选定的数据库中的key。
-
quit命令:
+ quit
该命令要求服务器关闭连接。一旦所有待处理的回复都返回客户端,连接就会关闭
Redis图形化客户端
-
进入到Redis的安装目录下执行如下命令。
+ redis-server --service-install redis.windows.conf --loglevel verbose
-
使用jedis操作Redis的步骤
-
构建JedisPoolConfig及JedisPool
-
获取Jedis类的实例操作Redis
-
附件:linux
pwd 查看当前所在目录
cd 打开目录
ls -a查看目录下文件
ll: 以列的方式显示目录下的文件列表
mkdir 创建文件目录
rm -rf 删除文件或目录
rm -ri 删除文件前询问用户
cp : 复制文件命令(-r 可以复制目录)
mv 移动文件或修改文件名
d开头的是目录 -开头的是文件
白色 文件 紫色 目录
编辑命令 vi vi a.txt 点击 i 输入数据 esc 在输入:wq!
先输入i 才进入编辑命令;
:wq! 先保存 后退出 结束 或者x
i 编辑命令
:q! 不保存退出vi编辑模式
退出编辑命令:Esc
linux常用命令
目录 | 说明 |
---|---|
/ | Linux系统根目录 |
/dev | 设备文件目录 |
/etc | 操作系统的配置文件目录(防火墙、启动项) |
/home | 普通用户的主目录 |
/usr | 程序和数据存放目录 |
/var | 包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等 |
/media | Linux自动识别的设备挂载目录,例如:U盘 |
/mnt | 可以挂载一些临时性的文件系统或设备 |
/root | root用户的主目录 |
系统指令
数据同步
关机前,先执行数据同步,将数据同步到磁盘中,以防数据丢失
sync
关机
示例 | 说明 |
---|---|
shutdown -h now |
立即关机 |
shutdown -h 10 | 10分钟后关机 |
shutdown -h 20:25 | 20:25分关机 |
重启
示例 | 说明 |
---|---|
reboot |
立即重启 |
shutdown -r now |
立即重启 |
shutdown -r +10 | 10分钟后重启 |
halt | 关闭系统 |
帮助指令
<指令> --help ls --help
文件/目录常见操作
查看当前目录路径
pwd
打开目录命令
cd [选项] 目录名
选项 | 说明 |
---|---|
-p | 如果目录是符号链接,则进入实际的目录 |
-L | 如果目录是符号链接,则进入链接的目录 |
- | 单独- 表示返回进入本目录之前的目录cd |
示例 | 说明 |
---|---|
cd /home |
进入 /home 目录 |
cd bin |
进入当前目录下的 bin 目录 |
cd ~ |
打开当前用户的主目录 |
cd .. |
返回上级目录 |
cd - |
返回进入目录 |
cd / |
打开根目录 |
3. 浏览目录下的文件列表
ls [选项]
选项 | 说明 |
---|---|
-a | 查看目录下全部的文件或目录,包括隐藏文件 |
-l | 将文件列表以列的方式展示出来,一行显示一个文件 |
示例 | 说明 |
---|---|
ls |
显示当前目录的文件列表,只显示文件名称 |
ls -l |
显示当前目录的文件列表,详细模式 |
ls -a |
显示当前目录的文件列表,包括隐藏文件 |
ls -la |
以列表的方式查看当前目录下的所有文件 |
4. 创建文件目录
mkdir [选项] 目录名称
选项 | 说明 |
---|---|
-m | 设置档案的权限,后边可以跟权限表示 |
-p | 帮助用户直接将所需要的目录递归建立起来 |
默认 | 直接创建文件夹 |
示例 | 说明 |
---|---|
mkdir 文件夹名称 |
新建文件目录 |
mkdir -p 文件夹名称 |
递归新建多级目录 |
5. 删除文件目录
rmdir [选项] 目录名称
选项 | 说明 |
---|---|
-p | 递归将所有层级目录都删除 |
默认 | 删除指定的目录 |
示例 | 说明 |
---|---|
rmdir 目录名称 |
删除指定目录 |
rmdir -p 目录名称 |
递归删除指定目录及中间目录 |
6. 复制文件或目录
cp [选项] [源目录] [目标目录]
选项 | 说明 |
---|---|
-r | 递归持续复制,用于目录的复制行文 |
-f | 强制复制,当有重复或其他疑问时,不会询问使用者,而强制复制 |
-p | 保存源文件和目录的属性 |
-i | 覆盖既有目录之前先询问用户 |
示例 | 说明 |
---|---|
cp -r 源目录 目标目录 |
递归复制源目录的所有文件和文件夹到目标目录 |
cp -ri 源目录 目标目录 |
执行复制操作时覆盖原有的目录前询问用户 |
7. 移动/修改文件名
mv [选项] 源文件或目录 目标文件或目录
选项 | 说明 |
---|---|
默认 | 直接移动文件 |
-b | 若需要覆盖文件,则覆盖前先备份 |
-f | 如果已经存在目标文件,则强制覆盖 |
-i | 若目标文件已存在,则会询问是否覆盖 |
示例 | 说明 |
---|---|
mv 文件1 文件2 |
将文件1 名称更改为文件2 |
mv 目录1 目录2 |
将目录1 的文件移动到目录2 |
8. 创建文件
touch 文件名称
9. 查看/编辑文件 cat命令适合打开内容较少的文件
cat [选项] 文件名称
选项 | 说明 |
---|---|
默认 | 展示文件内容 |
> | 创建并打开一个新的文件 |
示例 | 说明 |
---|---|
cat 文件名称 |
显示一个小的文件内容 |
cat > 文件名称 |
创建并打开一个新的文件 |
10. 查看文件开头内容
head [参数] 文件
参数 | 说明 |
---|---|
-n | 显示的行数 |
默认 | 默认显示文件的前10行数据 |
示例 | 说明 |
---|---|
head -5 文件1 |
显示文件1 头5行数据 |
11. 查看文件结尾内容
tail [参数] 文件
参数 | 说明 |
---|---|
-f | 该参数用于监视File文件增长,文件内容更新后,终端显示也将动态更新 |
-n number | 从倒数第number 行位置读取指定文件的全部内容 |
示例 | 说明 |
---|---|
tail -f 文件1 |
动态加载文件1 的内容(常用于查看日志文件)Ctrl + c 推出终端 Ctrl + z 临时退出 后台仍在运行 jobs 查看挂起的任务 fg 1 恢复挂起的任务 |
tail -n 5 文件1 |
展示文件1 后5行数据 |
文件目录查找
whereis <文件名> whereis hosts
用户/用户组常用操作
1. 临时切换用户 用户配置仍然沿用原来的用户配置,如环境变量、系统设置等。
su [用户名]
2. 切换用户 环境变量、系统设置等全部切换成新用户的用户配置
su - [用户名]
3. 查看当前登录用户
whoami
4. 查看当前用户所属分组
groups
5. 查看当前用户UID和GID
id
6. 添加新用户 在添加用户之后,只有为其设置密码,用户才能登陆
useradd [选项] 用户名
选项 | 说明 |
---|---|
默认 | 直接添加用户 |
-c | 代表comment指定一段注释性描述 |
-d | 指定用户主目录 |
-g | 指定用户所有的用户组 |
-G | 指定用户所属的附加组 |
-u | 指定用户的用户号 |
示例 | 说明 |
---|---|
useradd 用户名 |
在Linux操作系统中添加用户 |
useradd -u 指定的UID 用户名 |
在Linux操作系统中添加用户并指定用UID |
7. 修改用户密码
passwd [选项] 用户名
选项 | 说明 |
---|---|
-d | 删除密码,仅有系统管理员才能使用 |
-f | 强制执行 |
-k | 设置只有密码过期后才能更新 |
-l | 锁住密码 |
-s | 列出密码的相关信息,仅有系统管理员才能使用 |
-u | 解开已上锁的账号 |
示例 | 说明 |
---|---|
passwd yacon |
重置密码 |
8. 删除用户
userdel [选项] 用户名
选项 | 说明 |
---|---|
-r | 删除用户及其登陆日志等信息 |
-f | 强制删除用户,即使用户已经登陆 |
默认 | 直接删除用户 |
示例 | 说明 |
---|---|
userdel 用户名 |
删除用户 |
userdel -r 用户名 |
删除用户并同时删除其登陆信息 |
9. 修改用户信息
usermod [选项] [参数] 用户名
选项 | 说明 |
---|---|
-c | 修改用户账户的备注文字 |
-d | 修改用户登陆时的目录 |
-e | 修改账户的有效期 |
-f | 修改密码过期后多少天关闭账号 |
-g | 修改用户所属的群组 |
-G | 修改用户所属附加组 |
-l | 修改用户账号名称 |
-L | 锁定用户密码,是密码无效 |
-u | 修改用户id |
-U | 解除密码锁定 |
示例 | 说明 |
---|---|
usermod -l 新用户名 旧用户名 |
修改用户登录名 |
usermod -g 新组名 用户名 |
修改用户所属分组 |
10. 添加用户组
groupadd [选项] 组名称
选项 | 说明 |
---|---|
默认 | 添加用户分组 |
-g | 指定工作组的id |
-r | 创建系统工作组 |
-o | 允许添加组ID不唯一的工作组 |
示例 | 说明 |
---|---|
groupadd 组名 |
添加分组 |
groupadd -g 组GID 组名 |
添加分组并指定GID |
权限操作
Linux操作系统为文件定义了读、写、执行三种权限,不同的用户或者用户组可以具有不同的权限。系统采用了r
、w
、x
来分别表示读、写、执行权限。 使用ls -l
可以获取如下信息:
drwxr-xr-x. 2 root root 4096 Nov 17 07:39 bin
从左至右分别代表如下含义: d => 代表是目录而不是文件(文件用”-“表示)。 rwx => 代表拥有者具有读、写、执行的权限。 r-x => 代表同组用户具有读、执行的权限,但是没有写权限。 r-x => 代表其他组用户具有读、执行的权限,但是没有写权限。
1. 变更权限
chmod [选项] [模式] 文件名
选项 | 说明 |
---|---|
-c | 显示指令执行过程,但只返回更改的部分 |
-f | 不显示错误信息 |
-r | 递归授权 |
-v | 显示指令执行过程 |
权限模式 | 说明 |
---|---|
u | 拥有者 |
g | 同组用户 |
o | 其他组用户 |
+ | 赋予权限 |
- | 收回权限 |
r | 读权限 |
w | 写权限 |
x | 执行权限 |
数字模式 | 二级制表示 | 十进制表示 | 说明 |
---|---|---|---|
r-x | 101 | 5 | 可读、可执行权限 |
rwx | 111 | 7 | 可读、可写、可执行权限 |
r— | 100 | 4 | 可读权限 |
示例 | 说明 |
---|---|
chmod -r u+x,g+w f01 |
将文件f01 的执行权限赋给当前用户,写权限赋给用户所在的用户组 |
chmod -r u=rwx,g=rw,o=rw f01 |
将文件f01的读、写、执行权限赋给当前用户,将读、写权限赋给用户所在的用户组和其他用户 |
chmod 745 -r f01 |
将文件f01的读、写、执行的权限赋给当前用户,将读和执行的权限赋给用户组,将读的权限赋给其他用户 |
chmod 777 -r f01 |
将文件f01的读、写、执行的权限赋给所有的用户 |
进程管理
1. 查看进程
ps -ef|grep [进程关键词]
列名 | 说明 |
---|---|
UID | 开启进程的用户 |
PID | 进程的唯一标识 |
PPID | 父进程 |
c | CPU占用资源比例 |
CMD | 进程所执行程序的具体位置 |
ps -ef|grep sshd
2. 杀死进程
kill -9 [PID]
网络管理
1. 查看服务器的IP地址
ifconfig
eth* 为普通网卡 lo 为环回网卡
2. 启用网卡
ifconfig [网卡标示] up
3.关闭网卡
ifconfig [网卡标示] down
4. 获得IP地址
dhclient
5. 查询端口
netstat -tulpn
6. 关闭防火墙
serce iptables stop
服务管理
1. 启动服务
serce 服务名 start
2. 关闭服务
serce 服务名 stop
3. 查看开机启动的服务
chkconfig --list
解压/压缩
tar [选项] [压缩包]
选项 | 说明 |
---|---|
-c | 指定特定目录压缩 |
-x | 从备份文件中还原文件 |
-t | 列出备份文件的内容 |
-r | 添加文件到已经压缩的文件 |
以上四个命令是独立的命令,压缩解压必然会用到其中一个,可以和其他的命令连用,但是也只能用其中一个。
选项 | 说明 |
---|---|
-z | 有gzip属性的(扩展名是gz的) |
-j | 有bz2属性的(扩展名是bz的) |
-Z | 有compress属性的 |
-v | 显示所有过程 |
-O | 将文件解压到标准输出 |
-f | 使用档案名称 |
示例 | 说明 |
---|---|
tar -zxvf 包名 |
解压gzip包 |
tar -jxvf 包名 |
解压bz包 |
tar -xvf 包名 |
解压普通包 |
软件安装卸载
rpm [选项] [软件包]
选项 | 说明 |
---|---|
-ivh | 安装显示安装进度 |
-Uvh | 升级软件包 |
-qpl | 列出rpm软件包内的文件信息 |
-qpi | 列出rpm软件包的描述信息 |
-qf | 查找指定文件属于哪个rpm软件包 |
-Va | 校验所有的rpm软件包,查找丢失的文件 |
-e | 删除包 |
-qa | 查找已经安装的rpm包 |
示例 | 说明 | |
---|---|---|
rpm -qa | grep 软件包关键词 |
查询是否已经安装了某软件包 | |
rpm -e 软件包全名 |
卸载已经安装的软件包 | |
rpm -ivh 软件包路径 |
安装软件包并查看进度 |
其它常用命令
1. 清屏
clear
2. 查询命令详细参数
man [命令名称]
3. 挂载命令
mnt [设备名称] [挂载点]
4. 查看系统位数
uname -m
指令详解
查看、编辑文件 如果文件名存在,则直接打开文件;如果文件不存在,则打开一个全新的空文件
文件名
命令模式 当用户使用命令打开文件后,则进入命令模式。
常用命令 | 说明 |
---|---|
L | 光标移至屏幕最后一行 |
space | 光标右移一个字符 |
backspace | 光标左移一个字符 |
n- | 光标向上移动N行 |
n+ | 光标下移n行 |
输入模式 用户进入输入模式后,出Esc键外,用户输入的任何字符都会被作为内容写入文件,用户输入Esc可以对文件内容进行相关操作
常用命令 | 说明 |
---|---|
a,i,r,o,A,I,R,O | 编辑模式 |
dd | 删除光标当前行 |
ndd | 删除n行 |
末行模式 如果用户完成文件编辑,则可以按esc+":"
进入末行模式,也可以输入:wq!
进行文件保存并退出,或者输入:q!
强制退出文件编辑。
常用命令 | 说明 |
---|---|
:wq! | 保存并退出 |
:q! | 强制退出 |
:s/字符串1/字符串2 | 将文件中出现的字符串1替换成字符串2 |
:set nu | 显示所有的行号 |
执行脚本
执行PL脚本
./vmware-install.pl
执行SH脚本
sh ./startup.sh