1.nosql
sql:
操作 数据库(关系型的) 的标准查询语言
关系型数据库:
表和表之间具有相应的关系 – 目的而言 – 中小型的项目 数据量不是很大的情况下.
rdbms: mysql oracle(java) sqlServer(c…)
nosql:
针对非关系型数据库的语言, 弥补关系型数据库一些缺点.主要用到大的数据量或者高并发的场景下面
2. 非关系型数据库
2.1 非关系型数据库分类
(1)key-value: redis
(2)column store: hbase
(3)文档型数据: MongoDb
(4)图形的数据库: Neo4J, InfoGrid, Infinite Graph --推荐系统
fastdfs – 存储图片的数据库(小型的分布式文件夹)
2.2 redis和memcache的比较
redis – 做缓存 和 memcache --做缓存
mysql | redis | memcached | ||
---|---|---|---|---|
类型 | 关系型 | 非关系型 | 非关系型 | |
存储位置 | 磁盘 | 磁盘和内存 | 内存 | |
存储过期 | 不支持 | 支持 | 支持 | |
读写性能 | 低 | 非常高 | 非常高 | |
存储的结构 | 表来存储 | 支持很多 list/set/array/string/map等 | 普通键值对key-value |
3. redis的使用场景
(1) 最多, 就是缓存(cache 使用空间换取时间) --redis
(2) 计数器应用 – 微博 热点新闻 – 转载 点赞(高并发)
(3) 实时防攻击系统 – 银行网站 (登录) --计数 (ip 同一个ip + 5)
redis–支持断电恢复 内存和磁盘
(4) 有效期的应用 – 道具 红包 优惠券 …
(5) 支持无序的场景 – set特效
(6) 队列 -->quene -->秒杀 抢购 --redis
(7) 消息系统订阅发布 -->redis(MQ消息队列–高并发 秒杀 抢购 转发 )
4.Redis的操作
直接下载安装(https://github.com/microsoftarchive/redis/releases)
4.2 基本操作
4.2.1 string
对字符串操作
set key value
get key
mset /mget
incr 增加1个
decr 减少1次
incrBy key num ; 增加num个
decrBy key num ; 减少num个
4.2.2 对key的操作
keys * ; 查看所有的key
expire key seconds ; 对key设置过期时间
ttl key : 查看key 剩余时间
del key :删除key
flushall 清库 (0-15个)
flushdb 清当前库
select index ; 选择库
4.2.3 对list操作
lpush(rpush) key value1/value2… 往list添加值
lpop(rpop) key 弹出一个值
lrange key start stop 搜索查询 lrange students 0 -1
lrem key count value 移出
lindex key index 查看索引对应的值
ltrim key start stop (对集合进行修剪)
4.2.4 set操作
sadd key members 添加值
srem key member 删除值
smembers key 查看可以对应的值
4.2.5 hash操作
hset key name value --设置key value
hget key name --通过key获取值
hmset key name1 key1 name2 key2 --批量设置
hmget key name1 name2 --批量获取
hkeys --获取所有的key
hvals --获取所有的value
hgetall --获取所有的key和value
5.事务
multi //标记一个事务块的开始。
exec //执行所有事务块内的命令。
弱事务 : 日志
强事务 : 同生共死
discard //取消事务,放弃执行事务块内的所有命令。
Redis的事务在执行exec指令时,才批量执行操作,没有回滚操作
6.订阅/发布
SUBSCRIBE channel [channel …] //订阅给定的一个或多个频道的信息。
PUBLISH channel message //将信息 message 发送到指定的频道 channel 。
新开一个客户端订阅tv频道
发布nihao!消息到tv频道
订阅tv频道的客户端可以收到nihao!消息
7.设置密码
7.1.通过命令动态调整密码
CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
CONFIG SET requirepass 123456 //将密码设置为123456
CONFIG SET requirepass “” //清除密码
AUTH 123456 //输入密码进行认证
7.2.通过配置文件设置密码
(1)在配置文件 的方式设置密码
redis.windows.conf --添加 requirepass 123456
(2)在启动的时候 redis-server.exe redis.windows.conf
(3)auth 123456
8.java操作Redis
连接redis服务: new Jedist(ip,host,timeout)
连接池操作redis: new JedisPool(config,ip,host,timeout,password)
(1)对字符串操作
和上面命令操作一样的
(2)list操作
存储 取值
(3)set操作
存储 取值
(4)hash操作
存储 取值
(5)排序 事务 --练习
9.redis 持久化
持久(持久层 dao层 mapper层): 就把数据保存到磁盘 这个过程就叫持久化
redis支持内存和磁盘存储
redis磁盘存储提供两种方案:
rdb方式 :
save 1 1 最快的保存方法 1s中 发生一次变化 – 如果保存数据 1s内完成 – 数据丢失 丢失1s数据
aof方式:
开启appendOnly yes
在操作的时候,把数据写到日志文件,在启动的时候,恢复日志文件 -->日志方式