赞
踩
NoSQL是指“不仅仅是SQL”(Not Only SQL)的缩写。它是一种数据库管理系统(DBMS)的范畴,用于存储和检索大量结构化或非结构化数据。与传统的关系型数据库管理系统(RDBMS)不同,NoSQL数据库通常采用非关系型的数据存储模型,如文档型、键值对、列族或图形等。
NoSQL数据库的设计旨在解决传统RDBMS在大规模分布式数据处理方面的一些限制,如扩展性、灵活性和性能。它们通常更适合用于处理半结构化或非结构化数据,以及需要高度并发性和水平扩展的场景。
NoSQL数据库的种类有很多,包括文档数据库(如MongoDB)、键值存储(如Redis)、列式存储(如Apache Cassandra)和图形数据库(如Neo4j)等。选择哪种类型的NoSQL数据库取决于应用的需求和数据模型。
Redis是一个开源的基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。它支持各种数据结构,包括字符串、哈希表、列表、集合、有序集合等,并提供了丰富的数据操作命令,使得开发者可以轻松地在内存中存储、检索和操作数据。
Redis特点:
# 下载源码
git clone --branch 6.2.6 --depth 1 https://github.com/redis/redis.git redis-6.2.6
# 进入目录
cd redis-6.2.6
# 编译
make && make install
# 检查是否成功
# 启动redis
redis-server
# 指定配置文件启动
redis-server redis.conf
后台启动,需要修改配置文件/usr/local/src/redis-6.2.6/redis.conf
# 监听的地址,可以在任意IP访问。默认为127.0.0.1,会导致只能在本地访问,生产环境不要设置为0.0.0.0 bind 0.0.0.0 # 守护进程,修改为yes后即可后台运行 daemonize yes # 密码,设置后访问redis必须输入密码 requirepass 123456 # 其他常见配置 # 监听的端口 port 6378 # 工作目录,默认是当前目录,也就是运行redis-server时的命令、日志、持久化等文件会保存在这个目录 dir . # 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号为0-15 databases 1 # 设置redis能够使用的最大内存 maxmemory 512mb # 日志文件,默认为空,不记录日志,可以指定日志文件名 logfile ”redis.log“
如何停止kill -9 PID
编写一个系统文件 vi /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重载系统服务
systemctl daemon-reload
# 设置开机自启
systemctl enable redis
# 开启redis
systemctl start redis
# 查看redis状态
systemctl status redis
# 停止redis
systemctl stop redis
# 连接redis
redis-cli -h 127.0.0.1 -p 6379 -a 123456
Redis 支持多种数据结构,以下是其中五种常见的数据结构:
命令 | 作用 | 示例 | 示例作用 |
---|---|---|---|
KEYS | 查看符合模板的所有key,*表示通配符,?表示任意单个字符 | KEYS a* | 查看a开头的所有key |
DEL | 删除key,返回成功删除的多个,一次可以删除多个 | DEL age | 删除key为age的kv键值对 |
EXIST | 判断KEY是否存在,返回存在的个数 | EXIST age | 查看是否存在age这个key |
EXPIRE | 设置key的有效期(秒),到期自动删除 | EXPIRE name 20 | 设置name的有效期为20s |
TTL | 查看key的有效期。-1代表永久有效,-2代表过期了 | TTL name | 查看name的有效期 |
根据字符串的格式不同,又可以分为3类。底层都是采用字节数组形式存储,只不过编码方式不同。最大空间不能超过512m
常见命令
Hash类型,也叫散列,其valye是一个无序字典,类似于Java中的HashMap。
String结构是将对象序列化为json字符串后存储,当需要修改对象某个字段时不方便。
常用命令:
Redis中的List类型与Java中的LinkedList类似,key看做是一个双向链表结构。
常用命令:
Redis 的 Set(集合)类型是一种无序的、不允许重复元素的集合数据结构。它提供了丰富的操作,如添加成员、检查成员是否存在、删除成员、求交集、并集、差集等。
# 张三的朋友集合 SADD zhangsan lisi wangwu zhaoliu # 李四的朋友集合 SADD lisi wangwu mazhi ergou # 查看张三的朋友集合大小 SCARD zhangsan # 求交集 SINTER zhangsan lisi # 求差集 SDIFF zhangsan lisi # 求并集 SUNION zhangsan lisi # 判断lisi是否在zhangsan的集合内 SISMEMBER zhangsan lisi # 判断zhangsan是否在lisi的集合内 SISMEMBER lisi zhangsan # 从zhangsan朋友圈内移除lisi SREM zhangsan lisi
Redis 的 Sorted Set(有序集合)类型是一种特殊的集合数据结构,它结合了 Set(无重复元素)和排序(每个元素关联一个分数)的特点。底层基于跳表+hash表
常见命令:
# 添加元素到集合中 ZADD stus 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jeery 92 Amy 76 Miles # 从集合stus删除Tom ZREM stus Tom # 查看Amy的分数 ZSCORE stus Amy # 查看Rose的排名 ZRANK stus Rose # 查找分数在80分以下的学生的数量 ZCOUNT stus 0 80 # 给Amy+2分 ZINCRBY stus 2 Amy # 获取排名前三的同学 ZRANGE stus 0 2 # 获取分数小于80的同学 ZRANGEBYSCORE stus 0 80
例子:
项目名:业务名:类型:id
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。