概念
Redis:非关系型数据库(non-relational),Mysql是关系型数据库(RDBMS)
Redis是当今非常流行的基于KV结构的作为Cache使用的NoSQL数据库
为什么使用NoSQL
关系型 数据库无法应对每秒上万次 的读写请求
表中的存储记录 数量有限
无法简单的通过增加硬件、服务节点来提高系统性能
关系型数据库大多是收费的,对硬件要求较高,软硬 件成本较高
NoSQL优势
大数据量,高性能
灵活的数据模型,无需事先为数据建立字段,随时可以存储自定义的数据格式
高可用,在不影响性能的情况下,可以方便的实现高可用的框架,能很好的解决关系型数据库扩展性差的问题
低成本
NoSQL劣势
无关系,数据之间是无联系的
不支持标准的SQL,没有公认的NoSQL标准
没有关系型数据库的约束,大多数也没有索引的概念
没有事务,不能依靠事务实现ACID
没有丰富的数据类型(数值,日期,字符,二进制,大文本等)
Redis安装和使用
官网:Redis官网
中文版:Redis中文版网址
下载
window版本
网址:window版本网址
使用步骤
下载Redis-x64-3.2.100.zip
解压,双击:redis-server.exe,如果启动失败需要手动配置:redis.windows.conf
在当前目录下,选择目录显示框,输入:cmd,进入命令行
输入redis-server.exe redis.windows.conf 回车
出现上图的图形,则证明该服务已启动
双击:redis-cli.exe,打开Redis自带客户端,通过该客户端可以执行和Redis的数据交互
输入:set,自动弹出语法格式
将光标通过空格键移到key上,输入key的值,光标通过空格键移到value上,输入value的值,回车。
出现该结果代表值保存成功
通过:get 方法取值
Linux版本
网址:Redis官网
安装步骤
通过Xftp工具,将下载在window上的压缩包上传到Linux上目录:/home/soft
解压到Linux上目录:usr/local目录:
解压命令:tar -zxvf 压缩包名 -C usr/local/
编译Redis文件,Redis是使用C语言编写的。会使用gcc编译器
在解压后的Redis安装目录执行make命令,
注意事项:
make命令执行过程中可能报错,根据控制台输出的错误信息解决
错误一:gcc命令找不到,是由于没有安装gcc导致
解决方式:安装gcc编译器后执行make命令
安装gcc编译器:在src目录下使用yum命令:yum -y install gcc
错误二:error:jemalloc/jemalloc.h:No such file or directory
解决方式执行:make MALLOC=libc
make命令之后,执行:make install,该命令类似于windows系统中配置环境变量,这样我们就可以在任何地方执行Redis的命令
Linux中的使用
开启Redis
Linux中的redis-server是服务窗口,redis-cli是客户端窗口
在src目录下执行:
打开服务器
前台启动:./redis-server
后台启动:./redis-server &(常用后台启动方式,如果修改了配置文件,则每次启动都需要指向配置文件)
打开客户端,执行:./redis-cli 开启命令行
关闭Redis
在客户端中执行:shutdown
在src目录下执行:./redis-cli shutdown(如果有密码:./redis-cli -a 密码 shutdown)
Redis客户端
redis命令行客户端
直接连接redis(默认ip:127.0.0.1,端口:6379):./redis-cli
指定IP和端口号连接redis:./redis-cli -h 127.0.0.1 -p 6379
-h redis主机IP(可以指定任意redis服务器)
-p 端口号(不同的端口号表示不同的redis应用)
远程客户端连接Linux上redis
网址:远程客户端网址
国产:客户端
Redis服务器有安全保护措施,默认只有本机可以访问,配置信息在Redis安装目录下的redis.conf文件。修改此文件的两个设置。
远程连接redis需要修改redis主目录下的redis.conf配置文件:
bind ip 绑定ip,此行注释
protected-mode yes 保护模式改为no
使用vi/vim命令修改redis.conf文件,修改文件前备份此文件,执行cp命令
步骤
在/usr/local/redis/目录下执行: cp redis.conf bak_redis.conf
使用vim/vi命令,执行:vim redis.conf 再执行:GG 将光标移至最后一行,再执行:/bind 按回车查找,执行:n 往下查找,找到 bind 127.0.0.1后将其注释掉,
找到protected -mode yes,将yes改成no
执行:esc按键,输入“:qw”,完成保存退出
修改结束后,每次启动redis时,需要指定redis.conf
进入src目录下执行:./redis-server ../redis.conf &
查看 防火墙的状态,执行:systemctl status firewalld
关闭防火墙命令:service firewalld stop
编程 客户端连接Linux的redis
Redis基本操作命令
1、沟通命令
命令行输入:ping,返回PONG,表示服务端运行正常
2、查看当前数据库中key的数目:dbsize
作用:返回当前数据库的 key 的数量,默认访问第0个库
3、Redis默认使用16个 库
可以在conf配置文件中修改:databases的值
4、切换库命令:select
执行:select index
5、删除当前库的数据:flushdb
删除当前库中的所有数据
6、redis自带的客户端退出当前redis连接:exit或quit
客户端退出连接,服务端继续运行
Redis的key的操作命令
keys:查询自己需要的key
语法:keys pattern
作用:查找所有符合模式pattern的key,pattern可以使用通配符
通配符:
*:表示0至多个字符,例如:keys * 查询所有的key
?:表示单个字符,例如:wo?d,配置word,wold
注意:Redis是单线程接收命令
exists:查询key是否存在
语法:exists key [key...]
作用:判断key 是否存在
expire:设置key的存活时间
语法:expire key seconds
作用:设置key的生存时间,超过时间,key自动删除。单位是秒
返回值:设置成功返回数字1,其他情况是0
ttl:查询key的剩余存活时间
语法:ttl key
作用:以秒为单位,返回 key的 剩余生存时间(ttl:time to live)
返回值:
-1:没有设置key的生存时间,key永不过期
-2:key不存在
数字:key的生存时间,秒为单位
type
语法:type key
作用:查看key所存储值的数据类型
返回值:字符串表示的数据类型
none(key 不存在)
string(字符串)
list(列表)
set(集合)
zset(有序集)
hash(哈希表)
del
语法:del key[key...]
作用:删除存在的key,不存在的key忽略
返回值:数字,删除的key的数量
五中数据类型
字符串string
字符串类型是Redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制,序列化后的数据,JSON化的对象甚至是一张图片,最大512M
基本命令
set key