nosql系列之redis
特点:
1)并发写入
2)从海量数据查找某一条数据记录
3)高扩展性和高可用性
redis和mongodb的区别
redis
基于缓存,资格老,支持多种数据结构,消耗内存较多,支持数万QPS,支持持久化存储
memcache
速度快,不能备份,响应速度快,支持十几万的QPS,bug较少
mongodb基于文件
社区活跃,查询功能强大,更新快,支持索引文档类数据库,最接近关系式数据库,结构相对单一
redis -- 通过键值存储数据
安装
make
make test -- 如果报错,则安装tcl
make PERFIX=/usr/local/redis install
cp /usr/src/redis-3.0.3/redis.conf /usr/local/redis
./bin/redis-server ./redis.conf -- 开启redis服务
vim redis.conf
daemonize yes --放在后台选项
./bin/redis-cli -h localhost -p 6379
bin/下的文件
redis-check-aof redis-check-dump -- 日志文件
redis-benchmark -- 检测工具
./redis-benchmark -n 100000 -c 60
string字符串类型
keys * --查看所有键值
set age 19 --设置键值的数据
get age --查看键值的数据
keys age --查看键值本身
setnx name1 zhangsan --防覆盖新建键值
setex name2 30 Janni --新建或修改临时键值,有效时间30s
ttl name2 --查看键值的有效期
mset a1 111 a2 222 a3 333 --设置多个键值
mget a1 a2 a3 --查看多个键值
msetnx a3 444 a4 555 --创建多个防覆盖机制键值
setrange a3 2 lisi --替换,从第二个字符开始
getset a3 "xxx" --查看原值并修改
getrange a3 0 5 --查看a3键值的0-5之间的字符
incr c1 --键值依次增加1
incrby c1 100 --键值依次增加100,值可自定义
decr c1 --键值依次减少1
decrby c1 100 --键值依次减少100,值可自定义
strlen b1 --查看键值的长度
append b1 lisi --追加键值的数据
del b1 --删除键值
hash类型
hset hash1 name1 hanhan --创建第一组数据
键 字段 键值
hget hash1 name1 --查第一组的第一个字段
hsetnx hash1 name1 Janni --防覆盖创建
hmset hash1 name1 name2 --创建多个字段
hmget hash1 name1 name2 --查看多个字段
hlen hash1 --查字段个数
hgetall hash1 --查指定键中的字段和值
hkeys hash1 --查指定键中的字段名称
hvals hash1 --查指定键中的数值
hdel hash1 name3 --删除指定键中的字段
hincrby hash1 id1 5 --hash1键中的id1字段每次增加5
list双向列表
1 2 3 4 5 正数下标
-5 -4 -3 -2 -1 负数下标
lpush list1 1 2 3 4 --创建队列向左
rpush list1 one two three --创建队列向右
lrange list1 0 -1 --查list1中所有的队列
linsert list1 before two hi --在list1列表中的two前面插入hi队列 (before | after)
lset list1 1 “six” --修改队列中元素的值
lrem list1 -2 hi --删除元素中重复的值,其中-2代表几个 ,并且是倒序的
ltrim list1 0 3 --保留list1上以下标为主的0-3的队列
lpop list2 --删左边第一个
rpop list2 --删右边第一个
rpoplpush list1 list2 --把list1的最后一个元素放到list2中
llen list2 查有多少个队列
lindex list2 1 --通过下标查看元素值
set集合
交集 差集 并集
sadd set1 aa bb cc --添加set集合
smembers set1 --查看集合中所有的元素
srandmember set1 --随机查看
spop set1 --随机删除
srem set1 --指定删除
scard set1 --查看该集合有多少个元素
sismember set1 bb --查看bb是否属于set1集合的元素
sdiff set1 set2 --查看set1和set2的差集
sdiffstore set3 set1 set2 --查看set1和set2的差集,并写入到set3
sinter set1 set2 --查看set1和set2的交集
sinterstore set3 set1 set2 --查看set1和set2的交集,并写入到set3
sunion set1 set2 --查看set1和set2的并集
sunionstore set3 set1 set2 --查看set1和set2的交集,并写入到set3
zset有序集合 sorted set
zadd zset1 11 aa 22 bb 33 cc --创建有序集合
zrange zset1 0 -1 withscores --查看有序集合,withscores参数是查看有序集合的分数 从小到大的顺序
zrevrange zset1 0 -1 withscores --查看有序集合,从大到小的顺序
zrangebyscore zset1 10 20 --查有序集合zset1中分数10-20之间的元素
zrem zset1 aa --删除有序集合中指定的值
zincrby zset1 5 aa --有序集合zset1中aa的值依次增加5,如不存在,则创建
zrank zset1 aa --通过元素名获取下标,从小到大的顺序
zrevrange zset1 aa --通过元素名称获取下标,从大到小的顺序
zcard zset1 --查看zset1中有几个元素
zcount zset1 10 20 --查看zset1中10-20之间的有多少个元素
zremrangeburank zset1 1 2 --根据下标删除数据
zremrangebyscore zset1 10 22 --根据分数删除数据
zinterstore zset3 2 zset1 zset2 --取2个有序集合的交集,并保存到zset3
zunionstore zset3 zset3 2 zset1 zset2 --取2个有序集合的并集,并保存到zert3
全局命令
dbsize --统计所有键值的数量
exists aa --查看某个键值是否存在
expire 设置生效时间
rename d1 d2 --改键值的名称,d1改为d2
type a1 --查a1键值的类型
info --查数据库版本信息
select 2 --选择其它数据库 范围(0-15)
more d2 1 --移动键值到某数据库
flushdb --清空当前数据库
flushdball 清空所有数据库
redis应用
启用密码:
vim /usr/local/redis/redis.conf
requirepass 123456
关闭服务:
pkill redis
使用密码登陆:
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf 开启服务
/usr/local/redis/bin/redis-cli -h localhost -p 6379 登陆redis
数据库备份和还原
备份:
save 保存到dump.rdb文件
cp -p /usr/local/redis/dump.rdb /root 把备份文件拷贝到/root下
还原:
cp -p /root/dump.rdb /usr/local/redis
设置备份文件的路径:
vim redis.conf
dir /usr/local/redis
设置主从
cp -r redis redis-slave
修改主配置文件的参数,不要和主服务器的相同
vim redis-slave/redis.conf
pidfile /usr/local/redis-slave/redis.pid
port 6380
dir /usr/local/redis-slave --指定备份的目录
slaveof 127.0.0.1 6379 --主服务器的IP地址和端口
masterath 123456 --有密码则开启
原理:
(1)Slave服务器连接到Master服务器.
(2)Slave服务器发送SYCN命令.
(3)Master服务器备份数据库到.rdb文件.
(4)Master服务器把.rdb文件传输给Slave服务器.
(5)Slave服务器把.rdb文件数据导入到数据库中.
开启从服务器的redis进程:
/usr/local/redis-slave/bin/redis-server /usr/local/redis/redis.conf
登陆redis:
/usr/local/redis-slave/bin/redis-cli -h localhost -p 6380 -a 123456
网友评论