Redis
泛指非关系型的数据库,不支持SQL语句
存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是key-value的形式NoSQL的世界中没有一种通用的语言,
每种nosql数据库都有自己的api和语法,以及擅长的业务场景,
NoSQL中的产品种类相当多:
Mongodb
Redis
Hbase hadoop (大数据使用的数据库)
Cassandra hadoop (大数据使用的数据库)
NoSQL和SQL的比较
适用场景不同:sql数据库适合用于关系特别复杂的数据查询场景,nosql反之"事务"特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务
两者在不断地取长补短,呈现融合趋势
Redis简介
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是NoSQL技术
阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色
Redis的特性
是内存型数据库
key-value的存储形式,key的类型是字符串值的类型一般分为5种数据类型
string
hash
list
set() # 普通集合
zeset() # 有序集合
Redis的优势
Redis的应用场景
缓存
Redis的配置 *****
bind
port
slaveof #奴隶
dir
dbfilename
键命令(所有的数据类型通用)
keys *
del key1 key2
expire key 10
操作数据
选择x号仓库
select x
string
set name zhangsan
get name
"zhangsan"
setex name 10 lisi # 既能保存又可以设置有效期,单位为秒,意味10s之内可以访问到
mset name1 zhangsan name2 lisi name3 wangwu
mget name1 name2 name3
"zhangsan"
"lisi"
"wangwu"
append name1 itcast
get name1
"zhangsanitcast"
del name2
keys * # 获取所有的key
hash
hset xiaoming height 175
hset xiaoming weight 65kg
hget xiaoming height/weight
175/60kg
hmset xiaoming name itcast age 11
hkeys xiaoming
// 得到他下面的键
hvals xiaoming
// 得到他下面键所对应的值
hdel xiaoming height
list
lpush a1 a b c d # 这个l代表左边
lrange a1 0 -1 # 这个l代表list 0-2 这个值可以是0-10将所有的数据都取出来.没有的自动过滤掉,不会报错
"d"
"c"
"b"
"a"
rpush a2 1 2 3 4 5 6
lrange a2 0 -1
"1"
"2"
"3"
"4"
"5"
"6"
linsert a2 before(after) 3 66
lset a2 2 bbb
lset a2 5 bbb
lrem a2 1 bbb # 只移除一次
set # 不允许修改
sadd a3 java python php
smembers a3
"java"
"python"
"php"
"C#"
srem a3 java
smembers a3
"python"
"php"
"C#"
zset # 不允许修改
zadd a4 4 lisi 7 xiaomei 3 wangwu 6 lili 8 xiaohua
zrange a4 0 -1
"wangwu"
"lisi"
"lili"
"xiaomei"
"xiaohua"
zrangebyscore a4 6 8
"lili"
"xiaomei"
"xiaohua"
zscore a4 lili
"6"
zrem a4 xiaomei
zrange a4 0 -1
"wangwu"
"lisi"
"lili"
"xiaohua"
zremrangebyscore a4 6 8
zrange a4 0 -1
"wangwu"
"lisi"
redis主从配置
优点
读写分离
数据备份
减轻主redis的访问量
redis的集群:
集群的好处:
负载均衡
如何配置:
1、创建了6个配置文件,port一定不同,启动6个redis的服务
port 7003
bind 172.16.179.131
daemonize yes
pidfile 7003.pid
cluster-enabled yes
cluster-config-file 7003_node.conf
cluster-node-timeout 15000
appendonly yes
2、将6个配置文件,使用redis-server 进行启动
3、将6个独立的redis-server服务给他变为一个群体
redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002
172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005
4、问题
redis-trib.rb 默认是没有这个命令
sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
redis-trib.rb 内部是使用ruby语言来实现,所以就需要ubuntu系统能够支持ruby的环境
sudo apt-get install ruby
安装完ruby之后,看看ruby的版本 ruby -v
如果是2.2以下的话,修改ubuntu下的source.list
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/sudo gem install redis
使用python代码对集群进行操作