1.结构化(Structured)
2.关联的(Relational)
3.SQL查询
SELECT id,name,age from tb_user WHERE id=1
4.事务ACID(原子性,一致性,隔离性,持久性)
NoSQL:非关系型数据库
1.非结构化
2.无关联的
3.非SQL
get user:1
4.BASE
总结
NoSQL数据库
memcache
很早出现的NoSql数据库
数据都在内存中,一般不持久化
支持简单的key-value模式
一般是作为缓存数据库辅助持久化的数据库
redis介绍
几乎覆盖了Memcached的绝大部分功能
数据都在内存中,支持持久化,主要用作备份恢复
除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset
等。
一般是作为缓存数据库辅助持久化的数据库
现在市面上用得非常多的一款内存数据库
mongoDB介绍
高性能、开源、模式自由(schema free)的文档型数据库
数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
支持二进制数据及大型对象
可以根据数据的特点替代RDBMS,成为独立的数据库。或者配合RDBMS,存储特定的数据
列式存储HBase介绍
HBase是 **Hadoop** 项目中的数据库。它用于需要对大量的数据进行随机、实时读写操作的场
景中。HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过 10 亿行数
据,还可处理有数百万列元素的数据表。
远程词典服务器,是基于内存的键值型NoSQL数据库
特征:
Redis是当前比较热门的NoSQL系统之一
它是一个开源的、使用ANSI C语言编写的 key-value 存储系统(区别于MySQL的二维表格
形式存储)
和Memcache类似,但很大程度补偿了Memcache的不足,Redis数据都是缓存在计算机 内
存 中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表
示,一断电或重启,内存清空,数据丢失
比如典型的取网站最新文章,可以将最新的 5000 条评论ID放在Redis的List集合中,并将超出集合部分从数据库获取
这个需求与上面需求的不同之处在于,前面操作以时间为权重,
这个是以某个条件为权重,
比如按顶的次数排序,可以使用Redis的sorted set,将要排序的
值设置成sorted set的
score,将具体的数据设置成相应的value,每次只需要执行一条
ZADD命令即可。
比如可以把上面说到的sorted set的score值设置成过期时间的时
间戳,那么就可以简单地通
过过期时间排序,定时清除过期数据了,不仅是清除Redis中的
过期数据,你完全可以把
Redis里这个过期时间当成是对数据库中数据的索引,用Redis
来找出哪些数据需要过期删
除,然后再精准地从数据库中删除相应的记录。
Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命
令来构建计数器系统。
这个使用Redis的set数据结构最合适了,只需要不断地将数据往
set中扔就行了,set意为集合,所以会自动排重。
通过上面说到的set功能,你可以知道一个终端用户是否进行了
某个操作,可以找到其操作的集合并进行分析统计对比等。没有做不到,只有想不到。
将数据直接存放到内存中,性能优于Memcached,数据结构更
多样化。
Redis读取的速度是30w次/s,写的速度是10w次/s
原子性 (主逻辑线程是单线程)
Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
pipline
string(字符串) a->b 配置 color--> red
list(列表) a->list 消息队列 msg--->["hello","ydlclass","itlils"]
hash(哈希) a->map 购物车 1----->["1"=>"剃须刀",“2”=>“电脑”]
set(集合) a->set 去重 quchong-->["北京",“山西”,“河北“]
zset(有序集合) a->sorted set 排行榜 top10->[”xx拿了金牌,10“,"跑路了,9.5"]
稳定性:持久化,主从复制(集群)
其他特性:支持过期时间,支持事务,消息订阅。
Windows版的安装比较简单,解压Redis压缩包完成即安装完
毕,安装的注意事项:
解压的目录不要有中文
目录结构层次不要太深
硬盘空间剩余空间最少要大于你的内存空间,建议20G以上
Redis 目录结构:
Redis服务启动与关闭
1、启动服务器:cmd redis-server.exe redis.windows.conf
2、默认端口号:6379
3、关闭服务器:直接关闭窗口
运行[redis-cli.exe]客户端
如何开机自启Redis
我们需要进入到你安装的Redis的目录中,通过DOS命令
redis-server --service-install redis.windows-service.conf --loglevel verbose
启动报错1067的话,在刚才redis的目录下新建文件夹Logs然
后再次启动即可。
我的电脑-管理-服务-Redis-右键启动
中文乱码
redis-cli --raw
服务器执行以下命令下载redis安装包
cd /export/software
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
执行以下命令进行解压redis
cd /export/software
tar -zxvf redis-6.2.6.tar.gz -C
执行以下命令安装C程序运行环境
yum -y install gcc-c++
使用压缩包进行安装
执行以下命令下载tcl安装包
cd /export/software
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
解压tcl
tar -zxvf tcl8.6.1-src.tar.gz -C ../server/
进入指定目录
cd ../server/tcl8.6.1/unix/
./configure
make && make install
cd /export/server/redis-6.2.6/
#或者使用命令 make 进行编译
make MALLOC=libc
make test && make install PREFIX=/export/server/redis-6.2.6
修改redis配置文件
cd /export/server/redis-6.2.6/
mkdir -p /export/server/redis-6.2.6/log
mkdir -p /export/server/redis-6.2.6/data
vim redis.conf
# 修改第61行
bind localhost
# 修改第128行 后台
daemonize yes
# 修改第163行
logfile "/export/server/redis-6.2.6/log/redis.log"
# 修改第247行
dir /export/server/redis-6.2.6/data
cd /export/server/redis-6.2.6/
bin/redis-server redis.conf
bin/redis-cli -h localhost shutdown
cd /export/server/redis-6.2.6/
bin/redis-cli -h localhost
一款基于Qt5的跨平台Redis桌面管理软件,支持:Windows
7+、Mac OS X 10.10+、
Ubuntu 14+,特点: C++ 编写,响应迅速,性能好。
1 下载地址:http://docs.redisdesktop.com/en/latest/install/#windows
安装客户端,连接Redis服务:
备注说明:Redis Desktoo Manager老版本免费,新版本收费
redis当中一共支持五种数据类型,分别是:
string字符串
list列表
set集合
hash表
zset有序集合
通过这五种不同的数据类型,可以实现各种不同的功能,也可以
应用在各种不同的场景。
所有操作看官网:
或者符合过人阅读习惯:https://www.runoob.com/redis/redis-keys.html
1 设置值 获取值
set ydlclass value
get ydlclass
2 mset mget 一次性操作多组数据
mset ydlclass value ydlclass1 value1 ydlclass2 value2
mget ydlclass ydlclass1 ydlclass2
3 没有这个键我们才设置
setnx dlclass value
4 将key的值 加一,减一
incr stock
decr stock
5设置 a值存活时间5秒,值是b 验证码
setex a 5 b
Redis hash 是一个string类型的field和value的映射表,hash特
别适合用于存储对象。
Redis 中每个 hash 可以存储 2的32 - 1 键值对(40多亿)
下表列出了 redis hash 基本的相关命令:
1设置值 获取值
hset user username zhangsan
hset user age 18
hget user username
2批量
hmset user1 username itnanls age 19
3获取所有的键值对
hgetall user
4获取所有小key
hkeys user
5获取所有值
HVALS user
6删除
hdel user age
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添
加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2的32 - 1 个元素 (4294967295, 每个列
表超过40亿个元素)。
下表列出了列表相关的基本命令:
1 设置值
lpush list1 1 2 3 4 1
rpush list1 6
2查看数据
lrange list1 0 -1
3 移除数据
lpop list1
rpop list1
1添加数据
sadd set1 1 2 3 4 5
2获取数据
smembers set1
3获取成员数量
scard set1
4业务 uv 当天登陆用户数
sadd uv:20220222 001 002 003 002
scard uv:20220222
1删除
del user1
2查看所有的key
keys * 生产环境下,别用
3存在key
exists user1
4存活时间
expire ydlclass 5
5剩余存活时间 登陆续期
pttl user1
6随机获取 key
randomkey
1添加
zadd pv 100 page1.html 200 page2.html 300 page3.html
2查看
zcard pv
3查询指定权重范围的成员数
ZCOUNT pv 150 500
4增加权重
ZINCRBY pv 1 page1.html
5交集
ZADD pv_zset1 10 page1.html 20 page2.html
ZADD pv_zset2 5 page1.html 10 page2.html
ZINTERSTORE pv_zset_result 2 pv_zset1 pv_zset2
6成员的分数值
ZSCORE pv_zset page3.html
7 获取下标范围内的成员。 排序,默认权重由低到高
ZRANGE pv 0 -1
8获取由高到低的几个成员(reverse)使用最多的
效率很高,因为本身zset就是排好序的。
ZREVRANGE key start stop