目录:
1.什么是NOSQL
2.NOSQL和RDBMS的区别
3.NOSQL的产品
4.介绍Redis
5.安装Redis
6.redis支持的数据类型
1. 什么是NOSQL
NOSQL(not only sql) 不仅是sql,它是所有非关系数据库的一种统称。
2. NOSQL和RDBMS的区别
RDBMS --关系型数据库:
1.高度组织化结构化数据。 --表结构 列 列....
2.结构化查询语言(SQL) sql语句
3.数据和关系都存储在单独的表中。
4.数据操纵语言DML,数据定义语言DDL
5.严格的一致性. ACID 原子性 隔离性 持久性 一致性
6.基于事务----都支持事务
NoSQL
1.代表着不仅仅是SQL
2.没有声明性查询语言
3.键 - 值对存储。
4.非结构化和不可预知的数据 字符串 集合 对象 队列
5.高性能,高可用性和可伸缩性。 ----便于搭建集群---挂载
3.NOSQL的产品
1.redis----结构基于key和value的形式
2.mongodb---介于关系型数据库和非关系数据库之间
4. redis简介
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、==可基于内存亦可持久化的日志型==、Key-Value数据库,并提供多种语言的API .[很多语言可以连接该redis]。
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构[存放的数据类型],例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
4.2 特点
1.Redis读取的速度是110000次/s,写的速度是81000次/s。
2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
4.持久化,默认在内存中进行计算。可以持久化到磁盘。 RDB---快照模式---在一定时间间隔内,对当前redis内存中的数据进行拍照存储. AOF---日志追加---每次执行的写命令,都会通过一个函数write记录到日志中。
5. 主从复制,哨兵模式,集群模式
5.官方不支持window系统,但是又第三方版本。 linux系统。
5. 安装redis
(1)把redis软件放入centos系统中并解压,下方连接进行下载http://download.redis.io/releases/redis-7.0.0.tar.gzhttp://download.redis.io/releases/redis-7.0.0.tar.gztar -zxvf xxxx.tar.gz
(2)进入到解压目录进行编译
make
(3)安装---可以在任意目录下使用redis的脚本命令
make install
(4)启动redis
查看redis的进程:
ps -ef | grep redis
关闭redis进程
kill -9 进程号
redis-server redis.conf //配置文件所在的路径
正常情况下执行了上面的命令后不是这样的,应该是下图那样
我们可以配置redis的配置文件进行后台隐藏,这样方便操作
开启后台启动 该配置文件是 redis.conf
开启后重新启动一下redis,就变成下图那样
5.2 redis客户端连接redis服务器
redis-cli 连接本地redis服务,可以有ping指令看看有没有成功
redis-cli -h 192.168.223.166 -p 6379
-h: redis服务器主机的ip
-p: redis服务器的端口号
5.3redis的配置文件
除了上述的进行后台隐藏的配置文件外,还有一个
设置redis远程连接
验证:
5.4 安装redis的客户端的UI软件
注意远程连接要关闭防火墙
6. redis中常用的命令
redis命令手册http://www.redis.net.cn/order/
Redis 命令参考 — Redis 命令参考http://redisdoc.com/
6.1 关于key的命令
keys *: 查看redis中所有的key
del key [key....]: 删除指定key的内容
expire key seconds: 为指定的key设置过期时间
ttl key: 查看当前的key的剩余时间
exists key: 判断指定的key是否存在 返回0表示不存在指定的key 否则表示存在指定的key
6.2 关于数据库的命令
默认redis支持数据库的个数为16个
select n: 选择数据库
flushdb: 清空当前库
flushall: 清空所有库的数据
6.3 redis支持的数据类型
redis命令手册http://www.redis.net.cn/order/
Redis 命令参考 — Redis 命令参考http://redisdoc.com/
这里所说的数据类型----指的是value的数据类型。
String 字符串类型
Hash 对象类型
List: 队列类型
Set: 集合类型
ZSet: 有序集合类型.
不同的数据类型有不同的命令。
6.3.1 String 字符串类型
表示它的value为字符串类型,它是使用最多的类型,因为任意数据类型都可以转化为字符串。下面是一些常用的命令
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 的值。
6.3.2 Hash类型
表示redis的value类型为Hash类型,一般存放对象数据。
1. hset key field value 将哈希表 key 中的字段 field 的值设为 value 。
2. hget key field 获取存储在哈希表中指定字段的值
3. hgetall key 获取在哈希表中指定 key 的所有字段和值
4. hkeys key 获取所有哈希表中的字段
5.hvals key 获取哈希表中所有值
6.3.3 list 队列
value 可以是一个队列---该队列的值可以重复而且有序。
1. LPush key value value value... 将一个或多个值插入到列表头部
2. lrange key start end 获取列表指定范围内的元素
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
3. lpop key 移出并获取列表的第一个元素
6.3.4 set集合类型
无序不允许重复.
1. sadd key value value ....向集合添加一个或多个成员
2.smemebers key 返回集合中的所有成员
3. SRANDMEMBER KEY 随机获取一个或多个元素
4.sinter key key: 返回给定所有集合的交集
6.3.5 sort set有序集合
和上面的set区别在于多了一个score分数列
1.zadd key score value score value :向有序集合添加一个或多个成员,或者更新已存在成员的分数
2.zrange key 通过索引区间返回有序集合成指定区间内的成员
3.ZREVRANK key start end 返回有序集合中指定成员的排名,默认是从小到大,我们使他从大到小