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