nosql入门
1.nosql
非关系型数据库的统称,它的几个特点:没有表、数据非结构化的、key-value格式进行存储、有自己的增删改查命令
2.nosql的产品有哪些?nosql产品的4大分类
redis,mongodb,hbase,memcache
3.使用场景
一般用在访问量比较大的场景中,用作缓存、消息系统等。
结构:网站架构以及nosql数据库在整个网站架构中所处的位置。
可以将一些实时的、高频的计算任务分配给nosql数据库,将计算结果在某个时间持久化到mysql中。
4.为什么nosql能够承载巨大的读写?
因为它是内存型数据库,即它的运行数据集都保存在内存中。我们之前的关系型数据库中的数据每次
读写都是一个IO操作,即需要从磁盘上读、然后写会磁盘。
二 认识redis
1)redis支持的数据类型还是比较丰富的,例如strings,lists,hash,set等数据类型。
2)redis还可以作为消息系统使用,提供了mq功能
3)redis每个实例都是单线程的
4)C语言编写,读写速度极高
5)支持主从复制、读写分离、集群
6)性能:这是redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计,而牺牲了部分的一致性。
7)可用性:在Cluster推出之前,可用性要靠Sentinel保证。有了集群之后也自动具有了Sentinel的监控和自动Failover能力。
8)水平扩展:集群的最重要能力当然是扩展,文档中称可以线性扩展到1000节点。
三 redis的运行模式
1)单机模式
在单机上运行一个redis实例,如果运行多个的话这些实例之间也没有任何关系。
2)主从模式
也称作是读写模式,也成为master-slave.
master负责写,slave负责读,slave不能进行写操作,它的数据全部来自于master。
哨兵模式,哨兵用来检测master是否可用,如果发现master不可用则会将slave设置成master,等原来的master恢复后自动变成slave.
只有一个master.
3)集群模式
无中新节点(去中心化)的很多redis实例,它的结构可以看做是多个master-slave的结合。
集群环境下,多个master,但是多个master各自有各自的槽,数据不同步
4.在web应用中,读、写两种操作哪个更频繁?
读更频繁,例如逛淘宝买衣服,逛了3天看了N多件最后下的订单。
5.理解误区
不要以为master不是redis,master、slave都是redis实例,都是安装好的一个redis软件。
四 redis启动 关闭
1.非守护进程方式启动
1)在任意目录下运行以下命令:
redis-server
即可启动redis。
2)验证是否启动成功
客户端登录
redis-cli
127.0.0.1:6379>ping
PONG
如果返回PONG则说明服务端正常启动。
3)非守护进程方式运行存在的问题
一旦ctrl+c退出命令行或者关闭xshell,redis服务器也就关闭了,无法再ping
2.守护进程方式启动
1)redis-server &
即可启动守护进程,测试ping,无异常
2)修改并在启动的时候指定redis.conf配置文件
cd /usr/local/bin
cp /usr/local/redis-3.2.11/redis.conf /usr/local/bin/6379.conf
vim 6379.conf
修改daemonize的值为yes,然后保存。
redis-server 6379.conf
3.注意
1)/usr/local/redis-3.2.11/redis.conf就是出厂设置文件。
2)如果在启动redis的时候,只运行redis-server命令,则会按照redis的出厂默认配置进行。
3)建议以redis-server xxx.conf格式的守护进程方式启动,会按照指定配置文件中的内容进行。
4.说说守护进程启动和非守护进程启动的区别?
守护进程保证了程序在后台一直运行。
5.关闭
1)kill命令
ps -ef | grep redis
kill -9 pid
2)登录客户端执行SHUTDOWN
redis-cli -p 6379
SHUTDOWN
备注:
a.SHUTDOWN命令有2个参数可供选择——SAVE|NOSAVE,默认SAVE会持久化redis中的数据到磁盘上
b.redis-cli -p 6379中的-p参数指定要登录的端口
6.卸载
源码方式安装:rm -f /usr/local/bin/redis-server等
yum方式安装:yum remove redis -y
7.常见错误
[root@iZ2ze9wnprrozvhc2eviueZ ~]# redis-server 6379.conf
10993:C 28 Feb 15:07:01.255 # Fatal error, can't open config file '6379.conf'
因为执行命令的目录没有在/usr/local/bin目录下,而6379.conf在/usr/local/bin目录下。
应该改为:
[root@iZ2ze9wnprrozvhc2eviueZ ~]# redis-server /usr/local/bin/6379.conf
备注:配置文件可放在任何一个目录
8.redis目录结构
redis-server redis服务端
redis-cli redis提供的客户端工具
redis-sentinel 搭建redis-sentinel(哨兵机制)集群,是redis实例的监控管理、通知和实例失效备援服务,是redis集群的管理工具。
redis-check-rdb 修复rdb持久化文件
redis-check-aof 修复aof持久化文件
redis-benchmark redis性能测试工具
*.tcl redis测试脚本
*.rb 依赖的ruby文件
tests目录 测试脚本存放的目录
utils目录 提供了一些工具
五:redis常用的一些关于数据库(系统)操作的基础命令
redis-server /etc/6379.conf 根据指定的配置文件加载server
redis-cli -p 6379 登录6379端口的server
redis-cli -p 6379 -a password 使用密码password登录6379端口的server
redis-cli -h 192.168.1.1 -p 6379 登录指定IP指定端口的server
redis-cli -c -p 6379 以集群的方式登录端口为6379的集群中的一个节点
redis-cli --raw -c -p 6379 以可以获取中文字符的方式登录
keys h*llo 查询符合指定通配符格式的key有哪些
select 10 redis中默认创建16个库,该命令可以将操作切换到索引为10的,即第11个库上
exists key 判断指定的key是否存在,如果存在返回1,否则返回0
expire key 60 设置某一个key的生命周期,即存活时间。例如expire name 5,则5秒name就不存在了
del key 从库中删除指定key的元素,可以删除任何数据类型的值
move key 1 将某个一key移到指定索引的库里面
config get keyname 获取指定配置文件中的key的配置信息
config set key value 设置指定配置文件中的key的配置信息
dbsize 获得当前库中key的个数,跟占用的内存空间没关系
flushdb 删除当前库中所有的内容
flushall 删除所有库中所有的内容
info 查看当前redis配置信息
save 同步内存中的数据到磁盘上,相当于word中的ctrl+s
shutdown 关闭server,注意:不是退出客户端
exit 退出当前客户端
quit 退出当前客户端
rename age nianling 将key为age的重命名为nianling
type key 获取key的存储类型
randomkey 获得一个随机的key
lastsave 获得最后一次同步磁盘的时间
六:redis配置文件简介以及基础配置
1.通读redis.conf
该文件分为几大块,分别为:
INCLUDES、NETWORK、GENERAL、snapshottingTING、REPLICATION、SECURITY、LIMITS、CLUSTER、
APPEND ONLY MODE、SLOW LOG、LUA SCRIPTING、EVENT NOTIFICATION、ADVANCED CONFIG
每一块都是有自己配置内容。
注意:
在redis里面表示占用空间大小的方式有2种,一种单位为k,m,g,一种单位为kb,mb,gb。对应关系为:
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes
2.最基础(最小)的必配配置建议
port 6380 配置server端运行的端口号
daemonize yes 以守护进程方式运行redis,要求启动redis-server的时候必须指定配置文件
pidfile /var/run/redis_6380.pid 指定pid文件的位置
logfile "/usr/local/redis/6380.log" 日志文件的位置
bind 127.0.0.1 允许指定客户端IP访问server,如果注销那么任何IP都可以访问
dir /usr/local/redis 指定持久化文件存放的位置,默认./,如果选择默认值那么在哪个目录启动redis-server持久化文件就生成到那个目录
dbfilename 6380.rdb 指定持久化文件的名称,默认名称dump.rdb。
appendfilename "6379.aof"
备注:
1)这些项目强烈建议个性化设置,否则如果多个实例共存时可能会产生文件覆盖或找不到之前的rdb文件,给管理造成麻烦。
2)默认情况下持久化文件需要运行save或者重启server才会生成,否则看不到该文件。
3)如果没有目录需要手动创建目录,文件不需要手工创建。
4)部分机器需要去掉logfile中的双引号,否则启动redis时报找不到路径