1.NOSQL
1.1 什么是NOSQL
NOSQL(not only sql) 不仅是sql,它是所有非关系数据库的一种统称。
1.2. NOSQL和RDBMS的区别
RDBMS --关系型数据库:
1.高度组织化结构化数据。 --表结构 列 列....
2.结构化查询语言(SQL) sql语句
3.数据和关系都存储在单独的表中。
4.数据操纵语言DML,数据定义语言DDL
5.严格的一致性. ACID 原子性 隔离性 持久性 一致性
6.基于事务----都支持事务
NoSQL
1.代表着不仅仅是SQL
2.没有声明性查询语言
3.键 - 值对存储。
4.非结构化和不可预知的数据 字符串 集合 对象 队列
5.高性能,高可用性和可伸缩性。 ----便于搭建集群---挂载
1.3NOSQL的产品
1.redis----结构基于key和value的形式
2.mongodb---介于关系型数据库和非关系数据库之间
2.redis
2.1redis简介
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API .[很多语言可以连接该redis]
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构[存放的数据类型],例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
2.2redis特点
1.Redis读取的速度是110000次/s,写的速度是81000次/s。
2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
4.持久化,默认在内存中进行计算。可以持久化到磁盘。
5. 主从复制(集群)
5.官方不支持window系统,但是又第三方版本。 linux系统。
2.3redis的安装
(1)把redis软件放入centos系统中并解压
使用 tar -zxvf xxxxxxxxx.tar.gz 解压
(2)进入解压好的目录里进行编译
make
(3)安装(可以在任意目录下使用redis脚本命令)
(4) 启动redis (在配置文件所在的目录)
因为我配置了后台运行所以启动了但是并没有显示出来
这里正常显示的是
2.4redis客户端连接redis服务器
redis-cli 连接本地redis服务
redis-cli -h IP地址 -p 端口号
例如我的 redis-cli -h 192.168.109.130 -p 6379
-h: redis服务器主机的ip
-p: redis服务器的端口号
2.5关于redis的配置文件redis.conf
进入redis解压目录即可看到redis配置文件 redis.conf
双击或者vi进入(建议双击进入,vi情况不好找到和修改)
这里配置的是是否开启后台运行
这里设置的是允许远程连接
尝试连接
查看redis进程
ps -ef | grep redis
强行关闭redis服务
kill -9 进程号
正常关闭是先shutdown然后exit
3.安装redis的客户端的UI软件
我使用的是redisplus
(1)新建一个连接
连接前提 window----linux 防火墙关闭。redis配置允许远程连接
默认是空的,我这里是有数据在里面所以DB0有数据
4.redis常用命令
http://www.redis.net.cn/order/
http://redisdoc.com/
4.1 关于key的命令
set key value
keys *: 查看redis中所有的key
del key [key…]: 删除指定key的内容
expire key seconds: 为指定的key设置过期时间
ttl key: 查看当前的key的剩余时间
exists key: 判断指定的key是否存在 返回0表示不存在指定的key 否则表示存在指定的key
4.2 关于数据库的命令
默认redis支持数据库的个数为16个
select n: 选择数据库
flushdb: 清空当前库
flushall: 清空所有库的数据
4.3 redis支持的数据类型
这里所说的数据类型----指的是value的数据类型。
String 字符串类型
Hash 对象类型
List: 队列类型
Set: 集合类型
ZSet: 有序集合类型.
不同的数据类型有不同的命令。
4.3.1 String 字符串类型
表示它的value为字符串类型,它是使用最多的类型,因为任意数据类型都可以转化为字符串。
value存储值的大小:512M.
1. set key value: 设置指定 key 的值
2. get key 获取指定 key 的值。
3. mset key value key value .... 同时设置一个或多个 key-value 对。
4. mget key key .... 获取所有(一个或多个)给定 key 的值。
5. incr key 将 key 中储存的数字值增一。 应用场景:点赞 收藏
6. decr key 将 key 中储存的数字值减一
7. setnx key value 只有在 key 不存在时设置 key 的值。
4.3.2 Hash类型
表示redis的value类型为Hash类型,一般存放对象数据。
1. hset key field value 将哈希表 key 中的字段 field 的值设为 value 。
2. hget key field 获取存储在哈希表中指定字段的值/td>
3. hgetall key 获取在哈希表中指定 key 的所有字段和值
4. hkeys key 获取所有哈希表中的字段
5.hvals key 获取哈希表中所有值
8.3.3 list 队列
value 可以是一个队列—该队列的值可以重复而且有序。
1. LPush key value value value... 将一个或多个值插入到列表头部
2. lrange key start end 获取列表指定范围内的元素
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
lpop key 移出并获取列表的第一个元素
8.3.4 set集合类型
无序不允许重复.
1. sadd key value value ....向集合添加一个或多个成员
smemebers key 返回集合中的所有成员
SRANDMEMBER KEY 随机获取一个或多个元素
sinter key key: 返回给定所有集合的交集
8.3.5 sort set有序集合
和上面的set区别在于多了一个score分数列----- 排行耪
zadd key score value score value :向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrange key 通过索引区间返回有序集合成指定区间内的成员
ZREVRANGE key start end 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序