-
Redis入门
NoSQL出现的必要性
高并发的读写::bbs的点击量统计
海量数据的访问::腾讯盛大的登陆系统
高可扩展性和高可用性:::
查看全部 -
# 默认安装 yum install redis
vim /etc/redis.conf
查看全部 -
redis
高性能键值对数据库,支持的数键值据类型
字符串类型、列表类型、散列类型、集合类型、有序集合类型
Redis的应用场景
缓存(聊天)、任务队列(秒杀,抢购)、应用排行榜、网站访问统计、数据过期处理、分布式集群架构中的session分离
查看全部 -
AOF 优势: 1.同步: a.每秒同步:异步完成,效率高,一旦系统宕机,修改的数据丢失 b.每修改同步:同步持久化,每分钟发生的变化记录到磁盘中,效率低,安全 c.不同步 2.日志写入操作追加模式append a.系统宕机,不影响存在的内容 b.写入一半数据,若系统崩溃,下次启动redis,redis-check-aof工具解决数据一致性 3.如果日志过大,自动重写机制,修改的数据写入到到磁盘文件,创建新文件,记录产生的修改命令,重写切换时,保证数据安全 4.格式清晰的日志文件,完成数据的重建 劣势: 1.对于相同数据文件,相比RDB,AOF文件较大 2.效率低 配置: vim redis.conf 默认: appendonly no #AOF方式默认关闭 appendfilename appendonly.aof #配置文件 #appendfsync always #每修改一次,同步到磁盘上 appendsync everysec 每秒同步到磁盘一次 #appensync no 不同步 实践打开AOF: appendonly yes appendfsync always 终端2:先断开redis ./bin/redis-cli shutdown 启动redis: ./bin/redis-server ./redis.conf 终端1:set name 100 终端2:产生appendonly.aof文件 终端1:flushall 清空数据库 终端2: ./bin/redis-cli shutdown vim appendonly.aof 删除flushall ./bin/redis-server ./redis.conf ./bin/redis-cli keys * 数据还原
查看全部 -
RDB 优势: 1.数据库只包含一个文件,通过文件备份策略,定期配置,恢复系统灾难 2.压缩文件转移到其他介质上 3.性能最大化,redis开始持久化时,分叉出进程,由子进程完成持久化的工作 ,避免服务器进程执行I/O操作,启动效率高 劣势: 1.无法高可用:系统一定在定时持久化之前宕机,数据还没写入,数据已经丢失 2.通过fock分叉子进程完成工作,数据集大的时候,服务器需要停止几百毫秒甚至1秒 配置: cd /usr/local/redis vim redis.conf 默认: save 900 1 #每900秒至少1个key变化,持久化一次,到内存一个快照 save 300 10 #每300秒至少10个key变化,往硬盘写一次 save 60 10000 #每60秒至少10000个key变化,写一次 dbfilename dump.rdb #数据的文件名 dir ./ #保存的路径,redis路径下
查看全部 -
Redis持久化 数据从内存同步到硬盘 两种持久化方式: RDB方式 AOF方式 持久化使用的方式: 1.RDB方式: 默认支持,在指定的时间间隔内,将内存中的数据集快照写入到磁盘 2.AOF方式: 日志的形式记录服务器处理的每一个操作,服务器启动之初,读取文件,重新构建数据库 3.无持久化 通过配置继用Redis持久化功能,Redis缓存机制 4.同时使用RDB和AOF
查看全部 -
Redis学习之Redis特性
1、多数据库
select 1:选择数据库,从0开始,一个redis实例,有15个实例
move key1 1:把key1切换到1号数据库
2、支持事务
multi: 开启事务
exec: 执行
discard: 回滚
查看全部 -
第一章: NoSQL概述
NoSQL=not only sql
非关系型数据库
为什么要NoSQL
web 2.0:可以进行互动,点赞,评论;非关系型数据库变得很热门,
关系型数据库应对web2.0变得力不从心:高并发,难以克服的问题
High performance --高并发读写 (每秒上万次的读写)
Huge Storage -海量的数据的高效率存储和访问
High Scalability && High Availability - 高可扩展和高可用性
主流的NoSQL: mongoDB,redis
四大类:
键值对:快速查询,但缺少关系
列存储:Hbase ,查找快,扩展性强,功能矩形
文档数据库:mongoDB,数据结构要求不严格,查询性能不高,缺少同一的查询语法
图型数据库:利用图结构,但对图做计算才能有结果,不适合分布式集群方案
特点:
易扩展
灵活的数据模型
大量数据,高性能
高可用
查看全部 -
,,查看全部
-
keys *:查询所有key
keys str? :查询以字符串str开头的key
del key1 key2 key3 ... :删除多个key
exists key:判断key是否存在,存在返回1不存在返回0
rename key newkey :对key进行重命名
expire key times(秒) :设置过期的时间
ttl key:查看key所剩的时间,若没有设置,则返回-1
type key :获取指定key的类型
查看全部 -
Redis的数据结构之sorted-set
存储Sorted-Set 1.Sorted-Set和Set的区别 sorted-set:每个成员都有一个分数与之关联,成员唯一,可以对应多个分数 2.Sorted-Set中的成员在集合中的位置是有序的 存储Sorted-Set常用命令: 1.添加元素:zadd zadd sort 10 a 20 b 30 c #a的分数是10、b的分数是20、c的分数是30 2.获得元素:zscore获得分数、zcard获得成员数量 zscore sort a #获得a的分数 3.删除元素:zrem、zremrangebyrank按照排名范围删除、zremrangebyscore按照分数范围删除 zrem sort a b #删除成员a、b zremrangebyrank sort 0 4 #删除排名0-4的成员 zremrangebyscore sort 10 30 #删除分数10-30的成员 4.范围查询:zrange zrange sort 0 -1 #所有成员 zrange sort 0 -1 withscores #查询成员及分数,从小到大 zrevrange sort 0 -1 withscores #从大到小 5.扩展命令: zrangebyscore sort 0 100 withscores #显示0-100分数的成员 zrangebyscore sort 0 100 withscores limit 0 2 #显示0-100分数的成员的前两名 zincrby sort 10 c #给c加上10 zcount sort 80 100 # 显示80-100分数的成员个数 Sorted-Set使用场景: 如大型在线游戏积分排行榜 构建索引数据
查看全部 -
Redis的数据结构之set
像set中增加元素 sadd myset 1 2 3 不允许重复 srem myset 1 2 删除数据 smember Myset 所有的值 sismember myset a 0不存在 1存在 差集运算 sdiff myset1 myset2 交集运算 sinter mya2 myb2 并集运算 sunion mya2 myb2 去掉重复元素 获得set中值的数量 scart myset 随机返回一个成员 srandmember myset sdiffstore myset1 myset3 myset4 将3 4 的差集存到1里 sinterstore m2 m3 m4 交集存m2 suionstore my3 ma3 mb3 并集存到my3
查看全部 -
Redis的数据结构之list
概述: 元素插入 链表表头或结尾插入:高效,中间:低 存储list: 1.ArrayList使用数组方式:使用索引查询-块,新增删除时涉及位移操作-慢 2.LinkedList使用双向链接方式:每个元素记录前后元素指针 3.双向链表增加数据 4.双向链表删除数据 存储list常用命令: 1.两端添加:lpush、rpush lpush list 1 2 3 #从左侧往list表中插入1 2 3 rpush list a b c #从右侧忘list表中插入a b c 2.查看列表:lrange lrange list 0 -1 #从头到尾查看 lrange list 0 5 #从开始到第5个查看 3.两端弹出:lpop、rpop lpop list #从左边弹出第一个数 rpop list #从尾部弹出第一个数 4.获取列表元素个数:llen llen list #查看元素个数 5.扩展命令:lpushx、rpushx、lrem、lset、rpoplppush lpushx list x #插入x到list表的开头 rpushx list y #插入y到list表的尾部 lrem list 2 3 #从头到尾删除2个3 lrem list -2 1 #从尾到头删除2个1 lrem list 0 2 #删除所有2 lset list 3 mmm #在list表第3个角标设置mmm linset list before a yy #在list表中a之前插入yy linset list after b xx #在list表中b之后插入xx rpoplpush list1 list2 #将list1表的开头压入到list2表的结尾
查看全部 -
Redis的数据结构之字符串
set company imooc:设置值
get company :取值
getset company :先获取值在设置值
del company 删除值
incr company 对数字加一
decr company 对数字减一 如果没有设置默认为0,如果是字符串,默认报错
incrby company 1,增加1
decrby company 减去1
append 以字符串的形式相加而不是数字形式相加
查看全部 -
Redis的数据结构之哈希
设置值:hset hash key1 val1
设置多个值:hmset hash key1 val1 key2 val2 = hset hash key1 val1 key2 val2
获取单个key值:hget hash key
获取多个key值:hmget hash key1 key2
删除单个/多个key值:hdel hash key1 key2
删除所有:del hash
判断某个属性是否存在:hexists hash key1
获取所有key和value: hgetall hash
获得属性数量:hlen hash
获取所有key: hkeys hash
获取所有val: hvals hash
指定某个属性增加某个数量: hincrby hash age number
查看全部
举报