----------------------------redis----------------------------
一、哪儿用了redis? 为什么用?
哪儿用了:首页轮播广告
为什么用:因为mysql走的硬盘顶不住高并发;redis是走内存;
二、什么是redis?
redis是c语言开发的高性能的k-v形式的数据库,数据存储在内存中
三、redis的安装和启动
1、安装
1)安装c语言环境
yum install gcc-c++
2)上传并解压
cd /usr/upload
tar -zxvf redis-3.0.0.tar.gz
3)编译并安装
cd /usr/upload/redis-3.0.0
make
make install PREFIX=/usr/local/redis
4)拷贝并修改配置文件
cp /usr/upload/redis-3.0.0/redis.conf /usr/local/redis/bin
vim /usr/local/redis/bin/redis.conf:
daemonize yes
2、启动和关闭
启动:
/usr/local/redis/bin
./redis-server redis.conf
关闭:
/usr/local/redis/bin
./redis-cli -h 127.0.0.1 -p 6379 shutdown
四、持久化
1、RDB:默认[数据]
策略:
save 900 1
save 300 10
save 60 10000
缺点:不能保证数据完整性
优点:不影响性能
实验:
1、删除dump.rdb
2、set str 123
3、./redis-cli shutdown----->观察dump.rdb(生成快照文件并持久化数据)
2、AOF:[命令]
策略:
# appendfsync always
appendfsync everysec
# appendfsync no
缺点:影响性能
优点:保证数据完整性
实验:
1、设置appendonly 为 yes
2、set str1 123
3、等待一秒观察appendonly.aof(持久化数据)
五、主从复制
1、过程
1)从往主发送sync命令
2)主往从发送rdb
3)主往从发送命令
2、配置步骤
主:无须配置
从:slaveof masterip masterport
实验:
1)往主写数据,观察从是否同步
2)关闭主,往从写数据(主死了从只能读)
六、redis-cluster
1、哨兵的缺点?
1)主总会满,rdb越来越大
2)哨兵节点又不存储数据
2、redis集群是多少台?
投票容错超过半数:3台 高可用:3台
3、为什么client连哪一台都行?为什么集群中有一个节点挂了,则整个群都挂了?
redis集群中有16384个槽分给了3个节点,存取数据时:crc16(key)%16384=0-16383
4、搭建步骤
1)安装ruby环境
yum install ruby
yum install rubygems
cd /usr/upload
gem install redis-3.0.0.gem
cd redis-3.0.0/src
ll *.rb
2)删除dump.rdb和appendonly.aof文件
cd /usr/local/redis/bin
rm -f appendonly.aof
rm -f dump.rdb
3)拷贝6个节点
cd /usr/local
mkdir redis-cluster
cp -r redis redis-cluster/redis-7001
cp -r redis redis-cluster/redis-7002
cp -r redis redis-cluster/redis-7003
cp -r redis redis-cluster/redis-7004
cp -r redis redis-cluster/redis-7005
cp -r redis redis-cluster/redis-7006
4)修改配置文件
vim /usr/local/redis-cluster/redis-7001/bin/redis.conf:
port 7001
cluster-enable yes
vim /usr/local/redis-cluster/redis-7002/bin/redis.conf:
port 7002
cluster-enable yes
vim /usr/local/redis-cluster/redis-7003/bin/redis.conf:
port 7003
cluster-enable yes
vim /usr/local/redis-cluster/redis-7004/bin/redis.conf:
port 7004
cluster-enable yes
vim /usr/local/redis-cluster/redis-7005/bin/redis.conf:
port 7005
cluster-enable yes
vim /usr/local/redis-cluster/redis-7006/bin/redis.conf:
port 7006
cluster-enable yes
5)创建启动脚本[v-y-p]
cd /usr/local/redis-cluster
vim start-all.sh:
cd /usr/local/redis-cluster/redis-7001/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7002/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7003/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7004/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7005/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7006/bin
./redis-server redis.conf
chmod 777 start-all.sh
./start-all.sh
ps -ef | grep redis
6)使用ruby脚本搭建集群
cd /usr/upload/redis-3.0.0/src
./redis-trib.rb create --replicas 1 192.168.204.31:7001 192.168.204.31:7002 192.168.204.31:7003 192.168.204.31:7004 192.168.204.31:7005 192.168.204.31:7006
7)测试
cd /usr/local/redis-cluster/redis-7001/bin
./redis-cli -c -p 7001
a、观察是否按分配的槽存储数据
127.0.0.1:7001> set str 123
b、观察主从关系
127.0.0.1:7001> cluster nodes
c、把7001停掉, 再观察主从关系
./redis-cli -p 7001 shutdown
./redis-server redis.conf
127.0.0.1:7001> cluster nodes
七、基本命令
keys *:查看所有key值
exists:判断key值是否存在
expire和ttl:设置和查看key的失效时间
incr和decr:自增和自减
八、redis五种数据类型
赋值 取值 删除 特点
string set k v get k del k string
hash hset k kv hget k k hdel k k map
list lpush/rpush k v... lrange k 0 -1 lrem k -2 v double linkedList
set sadd k v... smembers k srem k v set
zset zadd k 2 v... zrange k 0 -1 withscores zrem k v sort set
九、redis的多数据库实例
1、redis实例中提供了下标是0-15的16个数据库,下标不能修改,但可通过select切换
2、清空数据库的命令:
flushdb:清空当前数据库的数据
fluashall:清空所有数据库的数据