Redis数据库简介
Redis数据库是典型的非关系数据库,
redis有以下几个优点
具有极高的数据读写速度
支持丰富的数据类型
支持数据备份
支持数据的持久化
原子性
安装并使用Redis数据库
实验环境及材料
一台centos7即可,Rdis软件包,
软件包链接如下
链接:https://pan.baidu.com/s/1kV6shNMC9dPHFYwwjQf8hQ&shfl=sharepset
提取码:x3jo
1.Redis安装部署
1)安装
把包拖入Xshell
[root@CentOS7-02 ~]# tar zxf redis-3.2.9.tar.gz
[root@CentOS7-02 ~]# cd redis-3.2.9
[root@CentOS7-02 redis-3.2.9]# make && make install (这个包不用进行./configure)
(我只是展示命令,如果你不改路径不要执行下面这条命令)
如下命令,可用改安装路径,
[root@CentOS7-02 redis-3.2.9]# make PREFIX=/usr/local/ install
默认没有启动脚本文件,软件包中默认有,通过这个脚本可用设置相关配置文件
[root@CentOS7-02 ~]# cd /root/redis-3.2.9/utils/
[root@CentOS7-02 utils]# ./install_server.sh
[root@CentOS7-02 utils]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 4263/redis-server 1
2)启动关闭服务
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 stop (关闭)
Stopping ...
Redis stopped
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 start (开启)
Starting Redis server...
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 status
Redis is running (4280)
如果是关闭状态,它也会显示running,但不显示后面的数字,(进程号)
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 restart (重启)
2.Redis命令工具
1)Redis命令行工具
[root@CentOS7-02 ~]# redis-cli (登陆本机的Redis数据库)
127.0.0.1:6379>
ping (测试Redis服务是否启动,如下表示启动)
PONG
远程登陆其他的Redis数据库,这个就使用自己的IP演示
远程的话需要修改配置文件,添加自己的IP地址,才可以让自己或别人连接
127.0.0.1:6379>
exit
[root@CentOS7-02 ~]# vim /etc/redis/6379.conf
[root@CentOS7-02 ~]# /etc/init.d/redis_6379 restart
[root@CentOS7-02 ~]# redis-cli -h 192.168.100.102 -p 6379
192.168.100.102:6379>
192.168.100.102:6379>
exit (退出数据库)
当然上面如果你有第二台Redis服务器,也可以换成第二台的IP去连接
使用help命令帮助
[root@CentOS7-02 ~]# redis-cli
127.0.0.1:6379>
help set (查看set命令的帮助)
SET key value [EX seconds] [PX milliseconds] [NX|XX]
summary: Set the string value of a key
since: 1.0.0
group: string
2)redis-benchmark测试工具
这个工具官方的工具,可以有效的测试Redis数据库的性能,
1. 向I地址为192.168.100.102的IP(就是自己IP),端口6379,的Redis服务器,发送100个并发连接,与100000个请求测试
[root@CentOS7-02 ~]# redis-benchmark -h 192.168.100.102 -p 6379 -c 100 -n 100000
2.测试存取大小为4MB的数据包性能
[root@CentOS7-02 ~]# redis-benchmark -h 192.168.100.102 -p 6379 -q -d 4MB
3.Redis数据库常用命令
Redis数据库采用 key-value (键值对)的数据存储形式
set:存放数据,格式 set key valuse
get: 获取数据,格式 get key
127.0.0.1:6379>
set aaa bbb
OK
127.0.0.1:6379>
get aaa
"bbb"
key相关命令
1)keys
使用keys命令可以取符合规则的键值列表,结合*
?
127.0.0.1:6379> set a1 1
OK
127.0.0.1:6379> set a2 2
OK
127.0.0.1:6379> set a3 3
OK
127.0.0.1:6379> set v1 22
OK
127.0.0.1:6379> set v2 4
OK
127.0.0.1:6379>
keys * (显示当前库所有键)
1) "v2"
2) "key:__rand_int__"
3) "a2"
4) "mylist"
5) "a3"
6) "k1"
7) "counter:__rand_int__"
8) "aaa"
9) "k2"
10) "a1"
11) "v1"
127.0.0.1:6379>
keys v* (显示所有以v打开头的键)
1) "v2"
2) "v1"
127.0.0.1:6379>
set v22 8
OK
127.0.0.1:6379>
keys v? (显示键以v开头而且是后面只有一个字符的)
1) "v2"
2) "v1"
127.0.0.1:6379
> keys v?? (显示键以v开头而且后面只有两个字符的)
1) "v22"
2)exists
使用这条命令可以判断键值是否存在
127.0.0.1:6379>
exists v1
(integer) 1
( 1 表示这个键存在)
127.0.0.1:6379>
exists u
(integer) 0
(0 表示这个键不存在)
3)del
删除键值
127.0.0.1:6379>
get a1
"1"
127.0.0.1:6379>
del a1
(integer) 1
(删除成功)
127.0.0.1:6379>
get a1
(nil)
(提示已经没有了)
4)type
使用type命令可以获取key对应的value值类型
127.0.0.1:6379>
type a2
string
5)rename
rename命令是对已有的key进行重命名,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值
127.0.0.1:6379
> set s1 1
OK
127.0.0.1:6379
> set s2 2
OK
127.0.0.1:6379
> set s3 3
OK
127.0.0.1:6379
> keys s*
1) "s2"
2) "s1"
3) "s3"
127.0.0.1:6379
> rename s2 s3 ( 把s2重命名为s3, s3的原来的值就会变成s2 的值覆盖)
OK
127.0.0.1:6379
> keys s*
1) "s1"
2) "s3"
127.0.0.1:6379
> get s3 (是s2的键值)
"2"
6)renamenx
renamenx 命令的作用是对已有的key进行重命名,并检测新名是否存在,如果目标key存在,就不进行重命名
127.0.0.1:6379
> get s1
"1"
127.0.0.1:6379>
get s3
"2"
127.0.0.1:6379>
renamenx s1 s3
(integer) 0
(这显示执行失败)
127.0.0.1:6379>
get s1
"1"
127.0.0.1:6379>
get s3
"2"
127.0.0.1:6379>
renamenx s1 s5 (这样可以)
(integer) 1
127.0.0.1:6379>
get s5
"1"
(这是s1的键值)
127.0.0.1:6379>
get s1
(nil)
(已经不存在了)
多数据库常用命令
1)多数据库间切换
Redis支持多数据库,Redis在没有任何改动情况下默认包含16个数据库,使用数字0~15来表示
[root@CentOS7-02 ~]# redis-cli
127.0.0.1:6379>
(默认进去是0数据库,不会显示)
127.0.0.1:6379>
select 10 (切换到10数据库)
OK
127.0.0.1:6379[10]>
(显示前面有个10,表示当前是10数据库)
127.0.0.1:6379[10]>
select 16
(error) ERR invalid DB index
(没有16及以上的数据库)
2)多数据库间移动数据
Redis的多数据库中的数据都是独立的,例如在0上的aaa键值,其他数据库是没有的
127.0.0.1:6379>
get aaa
"bbb"
127.0.0.1:6379>
select 1
OK
127.0.0.1:6379[1]>
get aaa ( 显示没有)
(nil)
Redis数据库提供了一个move命令,可以在数据库中移动数据,而不是复制,原有位置的键会没有
127.0.0.1:6379[1]>
select 0
OK
127.0.0.1:6379>
get aaa
"bbb"
127.0.0.1:6379> move aaa 1 (把aaa键值移动到 1 数据库)
(integer) 1
127.0.0.1:6379>
get aaa (原来位置已经没了)
(nil)
127.0.0.1:6379>
select 1 (切换到 1 里)
OK
127.0.0.1:6379[1]>
get aaa (已经过来了)
"bbb"
3)清空数据内容
127.0.0.1:6379[1]>
flushdb ( 清空当前所在,1数据库内容)
127.0.0.1:6379[1]>
flushall (清空所有数据库内容,16个)
OK