NoSql数据库之Redis笔记Word文档下载推荐.docx
- 文档编号:606379
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:36
- 大小:1.22MB
NoSql数据库之Redis笔记Word文档下载推荐.docx
《NoSql数据库之Redis笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《NoSql数据库之Redis笔记Word文档下载推荐.docx(36页珍藏版)》请在冰点文库上搜索。
基于hadoop的数据库。
4、图式存储。
典型应用:
社交网络
3Redis的相关概念
3.1什么是redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。
它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如
下:
字符串类型
散列类型
列表类型
集合类型
有序集合类型。
3.2Redis的应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)。
(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。
(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
4Redis的安装及部署
4.1Redis部署环境
需要linux系统,centos6.4
Redis同样也有windows版本,可以练习使用。
官方不典型支持。
推荐使用linux版本。
需要gcc的开发环境。
4.2Redis的下载
http:
//redis.io/
最新版本:
3.0.3
本课程的版本:
3.0.0
是一个redis的源码包,c语言开发的。
4.3安装步骤
第一步:
安装linux虚拟机。
Centos6.4(32位)
第二步:
把源码包上传到服务器。
端口号22
第三步:
解压源码包。
tar-zxvfredis-3.0.0.tar.gz
第四步:
编译源码,需要gcc的环境。
如果没有就安装一个,需要联网。
安装gcc:
yuminstallgcc-c++
编译源码:
进入源码目录,make。
第五步:
安装
makeinstallPREFIX=/usr/local/redis
PREFIX:
指定安装目录
4.4启动和关闭
4.4.1前端启动模式
在bin目录下执行:
./redis-server
4.4.2后端启动模式
需要redis.conf配置文件:
把此文件复制到redis的目录。
修改redis.conf文件:
daemonizeyes(默认是no)
查看原来启动的redis进程,并将其杀掉
启动:
./redis-serverredis.conf
需要指定一个配置文件。
4.4.3关闭redis
1、kill进程
2、正常关闭
./redis-cli-h192.168.25.147-p6379shutdown
-h:
服务的ip地址
-p:
端口号
如果是本地服务,而且端口是6379这些参数可以省略。
4.5Redis的客户端
4.5.1Redis自带客户端:
redis-cli
Ø
(1)连接redis服务器:
(2)简单命令:
Ping:
测试服务器是否还活着。
(3)Set:
命令,添加一个key
Setkeyvalue
例子:
127.0.0.1:
6379>
setkey1100
OK
Get命令,取一个key的值
Getkey
getkey1
"
100"
4.5.2Java的客户端Jedis
导入Jedis开发的Jar包
开发测试程序
如果远程连接失败,查看linux的防火墙是否开放redis的服务端口。
第一种方法:
关闭防火墙:
serviceiptablesstop
第二种方法:
修改配置文件开放指定端口。
修改:
vim/etc/sysconfig/iptables
重启防火墙服务
[root@localhost~]#serviceiptablesrestart
iptables:
Flushingfirewallrules:
[OK]
SettingchainstopolicyACCEPT:
filter[OK]
Unloadingmodules:
Applyingfirewallrules:
4.5.3图形客户端
注意:
当前图形客户端不支持集群操作
Redis中默认有16个数据库。
0-15号。
默认操作0号库。
使用命令切换数据库:
6379[1]>
select16
(error)ERRinvalidDBindex
select15
6379[15]>
库和库之间相互隔离,不同的库中可以有相同的key。
数据库的数量在redis.conf中配置:
5Redis中的数据类型
5.1String类型
基础数据类型。
在redis中所有的值都是字符串。
在redis中命令不区分大小写。
1、set命令:
添加一个key
2、get命令:
取一个key
3、Incr命令:
加一命令。
如果key的值是数值类型可以使用此命令。
4、decr命令:
减一命令
decra
(integer)100
5、del命令:
删除key
dela
(integer)1
geta
(nil)
5.2Hash类型
Key-value(hash)-key-value
|-key-value
命令:
1、Hset命令:
Hsetkeyhashkeyvalue
hsethash1a1
2、hmset:
批量添加key
Hmsetkeyhkey1valuehkey2valuehkey3value....
hmsethash2a1b2c3d4
3、hget命令:
取一个hashkey
hgethash1a
1"
4、hmget命令:
取多个hashkey
hmgethash2abc
1)"
2)"
2"
3)"
3"
4、自增命令:
hincrby
hincrbyhash2a10
(integer)11
5.3List类型
Redis中是链表形式的存储。
可以当做队列使用,也可以当做栈使用。
1、在左边添加元素:
lpush
Lpushkeyvalue1value2value3
lpushlist1abcdef
(integer)6
2、右边添加元素:
rpush
rpushlist112345
3、取最左边元素:
lpop,取完列表中此元素删除。
lpoplist1
f"
4、取最右元素:
rpop
rpoplist1
5"
5、查看列表中的元素:
lrange
Lrangekey起始下标结束下标(取全部的结束下标就是-1)
127.0.0.1:
lrangelist103
e"
d"
c"
4)"
b"
lrangelist10-1
5)"
a"
6)"
7)"
8)"
9)"
4"
5.4Set类型
特点:
集合中的元素是无序的并且没有重复的。
5.4.1命令
1、向集合中添加元素:
sadd
Saddkeyvalue1value2value3....
saddset1abcde
(integer)5
2、删除元素:
srem
Sremkeyvalue
sremset1a
3、查看集合中的元素:
smembers
Smemberskey
smembersset1
5.4.2集合的运算
1、差集运算
属于A并且不属于B的元素构成的集合。
SDIFFkey[key...]
saddsetaabcde
saddsetbcdefg
sdiffsetasetb
2、交集运算
属于A且属于B的元素构成的集合。
SINTERkey[key...]
sintersetasetb
5.4.3并集运算
属于A或者属于B的元素构成的集合
SUNIONkey[key...]
sunionsetasetb
g"
5.5SortedSet类型(zset)
特点集合但是是有序的。
在此集合中每个元素都有一个分数,可以根据分数升序排列。
5.5.1命令
1、添加元素命令:
zadd
Zaddkey得分元素得分元素。
。
zaddzset11a2b3c4d
(integer)4
zrem
zremzset1a
3、查看计划中的元素:
zrange
Zrangekey起始下标结束下标(-1全部)withscores(带分数)
zrangezset10-1
zrangezset10-1withscores
4、降序排列:
zrevrange
zrevrangezset10-1withscores
适用于应用排行榜。
6Keys命令
6.1可以设置key的有效期。
1、设置有效期:
expire
Expirekey生存期(以秒为单位)
seta100
expirea30
2、查看key的生存期
Ttlkey
-1:
永久
-2:
key不存在
3、持久化keypersist,可以把key持久化保存
persista
6.2其他keys命令
Keys命令,可以查看数据库中所有的可以列表。
keys*
1)"
list1"
2)"
zset1"
3)"
4)"
hash2"
5)"
key1"
6)"
setb"
7)"
seta"
8)"
list"
9)"
hash1"
10)"
hello"
11)"
set1"
7Redis的持久化
两种方案:
1、快照形式RDB形式。
(默认开启)
2、Aof形式。
命令形式存储。
(需要手动开启)
Rdb:
速度快。
丢失数据的概率大。
Aof:
默认每秒钟保存一次命令。
性能低,可靠性高。
最多丢失一秒的数据。
需要在redis.conf中配置。
Aof方案:
(appendonlyfile)
两种方案同时开启,使用aof恢复数据。
8主从复制
只需要修改redis.conf文件就可以。
需要配置两个虚拟机,如果不能实现,至少需要两个数据库实例。
创建slave服务器的实例。
1、把redis的bin目录复制一份。
2、修改redis.conf文件。
修改端口号。
配置从服务器,主服务器不需要做任何修改。
修改从服务器的redis.conf文件。
启动从服务器
9redis集群
9.1集群架构图
9.2集群中的槽slot
槽是用来存储key。
B
A
C
9.3redis-cluster投票:
容错
(1)领着投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
(2):
什么时候整个集群不可用(cluster_state:
fail)?
a:
如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态.ps:
redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.
b:
如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
ps:
当集群不可用时,所有对集群的操作做都不可用,收到((error)CLUSTERDOWNTheclusterisdown)错误
9.4安装步骤
需要6台虚拟机。
至少需要6个redis实例。
修改每个实例的端口7001~7006。
需要修改redis.conf文件。
安装ruby环境
安装ruby
yuminstallruby
yuminstallrubygems
安装ruby和redis的接口程序
拷贝redis-3.0.0.gem至/usr/local下
执行:
geminstall/usr/local/redis-3.0.0.gem
在/root/redis-3.0.0/src目录下有一个redis-trib.rb文件就是一个ruby的脚本文件,是用来创建redis集群的脚本文件。
把此文件复制到/usr/local/redis-cluster目录下。
修改每个实例的redis.conf文件。
第六步:
启动每个实例。
第七步:
使用redis-trib.rb脚本创建集群。
./redis-trib.rbcreate--replicas1192.168.25.147:
7001192.168.25.147:
7002192.168.25.147:
7003192.168.25.147:
7004192.168.25.147:
7005192.168.25.147:
7006
[root@localhostredis-cluster]#./redis-trib.rbcreate--replicas1192.168.25.147:
>
Creatingcluster
Connectingtonode192.168.25.147:
7001:
OK
7002:
7003:
7004:
7005:
7006:
Performinghashslotsallocationon6nodes...
Using3masters:
192.168.25.147:
7001
7002
7003
Addingreplica192.168.25.147:
7004to192.168.25.147:
7005to192.168.25.147:
7006to192.168.25.147:
M:
a96e224fe9aa5667a908a721c18aeeb78c0e628d192.168.25.147:
slots:
0-5460(5461slots)master
22f03de15a3fd7260f5efa83539a342b94f07032192.168.25.147:
5461-10922(5462slots)master
75ccb72ea57cce1fbd951117c021d385f126b894192.168.25.147:
10923-16383(5461slots)master
S:
2525654870fee9fa3a06d96c08f39e5c0912afea192.168.25.147:
7004
replicatesa96e224fe9aa5667a908a721c18aeeb78c0e628d
f153fb80c15168d6701d7ef2b5fddaff2f82ffef192.168.25.147:
7005
replicates22f03de15a3fd7260f5efa83539a342b94f07032
6d6565162bd0550f29fff20fe52ea6178f748fa1192.168.25.147:
replicates75ccb72ea57cce1fbd951117c021d385f126b894
CanIsettheaboveconfiguration?
(type'
yes'
toaccept):
yes
Nodesconfigurationupdated
Assignadifferentconfigepochtoeachnode
SendingCLUSTERMEETmessagestojointhecluster
Waitingfortheclustertojoin....
PerformingClusterCheck(usingnode192.168.25.147:
7001)
(0slots)master
[OK]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NoSql 数据库 Redis 笔记
![提示](https://static.bingdoc.com/images/bang_tan.gif)