目录
1、非关系型数据库
NoSql: [Not Only Sql不仅仅是sql]. 它是对所有非关系型数据库的一种统称。非关系数据库它们之间不存在任何的关联关系。 它的数据结构: key-value模式--而且数据也可以持久化到磁盘上。
常见的非关系数据库的种类:
- redis: 典型的非关系数据库
- mogodb: 它是介于关系型和非关系之间。
- hbase: 数据库【海量数据】
1.1、什么是redis
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
redis它是一个开源的数据库,缓存的服务器,它里面可以存放字符串,hash,列表,集合数据类型的数据,它的计算基于内存进行计算的。而且数据也可以持久化到磁盘中。 而且它也提高了哨兵模式以及集群模式来提高redis的可用性。
1.2、redis的特点
- Redis读取的速度是110000次/s,写的速度是81000次/s。
- 原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
---影响redis性能的因素:内存而不是多线程。- 支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)。
- 持久化--磁盘--防止数据丢失。
- 官方不支持window系统,但是有第三方版本。 linux系统。
1.3、了解配置文件
进入redis.conf配置文件可以看到:
259行 daemonize no: 设置redis服务启动时是否为守护进程
98行 port 6379: 修改redis的服务的端口号
75行 bind * -::* : 设置允许哪些ip连接redis服务器
1.4、redis也提供了客户端界面
redisplus下载地址:链接:http:// https://pan.baidu.com/s/1GjNFwbmksA1JhguHgcAcSQ 提取码: 3pcm 或着直接下载目录顶部文件
注意:记得把redis.conf配置文件中94行 改为peotected-mode no,75行 改为 bind * -::*,设置redis服务端允许任意ip连接 。
2、redis中常用命令
具体参考:redis命令手册
2.1、关于对key操作的命令
- keys *: 查看redis中所有的key
- exists key: 判断指定的key是否存在。存在返回1 否则返回0
- del key: 删除指定的key
- expire key seconds: 为指定的key设置过期时间。
2.2、关于库的命令
redis中默认存在16个库。
- select n: 选中库 n=0~15
- flushdb: 清空当前数据库
- flushall: 清空所有库的数据
2.3、 redis支持数据类型中常用命令
redis中存放的数据类型非常多,而我们使用最多的: 字符串类型,Hash类型,List队列类型, Set集合类型, SortSet有序集合类型。
2.3.1、字符串类型
redis存储数据的格式: key--value格式。 这里的key都是string类型,而我们说的redis支持的类型。指的是value的数据类型。存放的大小512M。
常用命令如下:
- set key value: 存储字符串类型的value。
- get key: 根据key获取对应的value字符串值。
- mset key value key value ...: 存储多个字符串类型的value。
- mget key key key...:获取多个key对应的value字符串值。
- setnx key value: 如果存在指定key,则不存入,如果不存在则存入。
- incr key: 对指定的key的value值进行递增。key对应的value必须为整型字符串。
- decr key: 对指定的key的value值进行递减。
- incrby key number: 按照number值进行递增。
2.3.2、hash数据类型
它存储的value就是一个hash类型,而hash类型的数据结构为:key value形式。一般用于存放对象数据。
常用命令如下:
- hset key field value [field value]: 将哈希表 key 中的字段 field 的值设为 value
- hget key field: 获取存储在哈希表中指定字段的值。
- hgetall key: 获取在哈希表中指定 key 的所有字段和值
- hkeys key: 获取所有哈希表中的字段
- hvals key: 获取哈希表中所有值
- hdel key field: 删除一个或多个哈希表字段
2.3.3、List(列表/队列)数据类型
它存储的value是一个List数据类型,value可以是多个,而且有序,可以重复。
常用命令如下:
- lpush key element [element...]: 在列表中添加一个或多个值
- Lindex key index: 获取列表中指定下标的元素。
- lrange key start end: 获取一定范围的元素。第一个为0 最后-1
- lpop key: 移除左边第一个元素
- lset key index element: 替换指定位置的元素内容
2.3.4、Set数据类型
它和list类型差不多,只是它的值不允许重复,而且是无序的。
常用命令如下:
sadd key element[element....]: 在集合中添加一个或多个值
smembers key: 获取集合中所有的元素。
sinter key1 key2:返回给定所有集合的交集
sdiff key1 key2: 返回给定所有集合的差集
2.3.4、sort set数据类型
它和set比较相似,它在添加元素时,指定了值,按值排序。应用于排行榜等。
常用命令如下:
- zadd key score element [score element ...]:添加有序集合元素
- zrange key start end [withscopes]: 从小到大的形式获取集合中的元素
- zrevrange key start end [withscopes]: 从大到小的形式获取集合中的元素
- zrem k1 element [element]: 移除集合中一个或多个元素
3、redis实际开发应用场景
1.热点数据的缓存: 减少对数据库的访问频率和减轻数据库的压力。
2. 限时业务的运用: 商品秒杀 存储登录者用户信息 存储短信验证码
3. 计数器相关问题: 点赞数 收藏数 播放量。
4. 排行榜相关问题: sort set
5. 分布式锁: ---同步锁:
6. 限量秒杀: ---decr key: