Redis-01

NOSQL

数据库发展历史

访问量低:
App	--> DAL(数据库访问层)	 --> Mysql实例


访问量提高:  读写分离
	添加缓存 : 变数据的读取速度

进一步提高: 分库分表

在这里插入图片描述

为什么用NOSQL

NOSQL(Not Only SQL)泛指非关系型的数据库(没有 行,列 的概念 用 Map 替代)
	处理 用户的个人信息,社交网络,地理位置. 用户自己生产的数据,用户日志等等的爆发式增长
	总而言之,就是处理大量数据的读写问题
	特点:
		1. 数据之间没有关系,好扩展(解耦)
		2. 大数据量(1秒 写8万次 读11万次)
		3. 数据类型多样(不需要事先设计表)
		4. 传统 RDBMS 和 NOSQL
			RDBMS
			- 结构化组织
			- SQL
			- 数据和关系都存在单独的表
			- 事物的 ACID
			NOSQL
			- 不仅仅是数据()
			- 没有固定查询语言
			- 键值对 ,列 ,文档 ,图
             - 最终一致性
             - CAP定理和 BASE (异地多活)
             - 三高(高性能 高可用 高可扩)

分类

KV键值对

Redis

文档型数据库

MongoDB( bson格式 和 json格式一样)

1. 基于分布式文件存储数据库,用来处理大量文档
2. 介于关系型与菲关系型数据库的中间产品	

列存储

HBase

分布式文件系统

图关系数据库(图结构数据)

Neo4j

安装

# 安装 c++
yum install gcc-c++
# 建立目录 并上传安装包 redis-5.0.9.tar.gz
mkdir redis
# 解压文件
tar -zxvf redis-5.0.9.tar.gz
# 进入文件 并编译
cd redis-5.0.9
make
# 拷贝文件
cp redis.conf /root/redis
# 安装 这里的 /root/redis 是自定义的redis安装路径
make PREFIX=/root/redis install
# 配置后端启动 Redis
cd ..
vim redis.conf
	设置 daemonize yes
# 启动 Redis
./bin/redis-server ./redis.conf
# 查看端口
ps -ef | grep -i redis
root       8385      1  0 19:48 ?        00:00:00 ./bin/redis-server 127.0.0.1:6379
root       8390   3234  0 19:49 pts/0    00:00:00 grep --color=auto -i redis

其他

# 客户端访问 在 bin 目录下  指定端口 ip号  redis-cli -h ip地址 -p 端口号
./redis-cli
# 测试客户端与Redis的连接是否正常
127.0.0.1:6379> ping 
PONG
# 退出客户端
127.0.0.1:6379> quit
# 结束 Redis 关闭默认的端口 在 Redis 安装目录下
./bin/redis-cli 
shutdown
# 利用第三方软件访问
vim redis.conf
	设置 bind + 虚拟机 ip 地址
# 此时如果通过redis客户端访问
./redis-cli -h 192.168.182.132 -p 6379

基础知识

默认有 16 个数据库 默认是第 0 个
Redis 单线程
	Redis 基于内存操作, Redis 的瓶颈是根据机器的内存和网络带宽
为什么 Redis 单线程还这么快
	Redis 将所有数据放在内存中,所以使用单线程去操作效率高,多线程( CPU 上下文会切换 : 耗时),对于内存系统来说,没有上下文切换的效率就是最高! 多次读写都在一个 CPU 上进行,在内存情况下,最佳方案!
# 切换数据库
select # + index(数据库下标)
# 查看数据库大小
DBSIZE
# 查看所有的 key
keys *
# 清空
flushall # 清空所有数据
flushdb  # 清空当前数据

数据类型

命令 : http://www.redis.cn/commands.html

# key-->键 value-->值 time-->时间

# 查看数据类型
type key
# 设置键值对 存在时会更新
set key vlaue
# 查看所有 key
keys *
# 获取 value
get key
# 检查 key 是否存在 
exists key
# 移动 key 
move key toDB 
	# toDB 代表移动到哪个数据库 
# 设置过期时间
expire key time
# 查看过期时间 time to lose
ttl key

基础数据类型

String

# append 追加字符串 如果 key 不存在,则视为 set
append key appendString
# 查看键对应值(String类型)字符串长度
strlen key

# 自增 自减
incr key  		  # 自增
decr key  		  # 自减
incrby key number  # 自增步长
decrby key number  # 自减步长

# 获取范围字符串 [start , end]
getrange key start end
# 替换范围字符串 从 start(包括) 开始用 str 替换 不改变后面部分
setrange key start str # hello fangsonghe --> setrange name 2 hell --> "hehellfangsonghe"

# 设置过期时间
setex key time value # set expire
# 当不存在时设置
setnx key value		# set if not exist

# 设置多个值
mset k1 v1 k2 v2 ....
# 获取多个值
mget k1 k2 ....

# 设置对象
set key {p1:value,p2:value......} # get user "{name:fang,age:18}"
# 设置多个对象
mset key:{id}:{p1 value} key:{id}:{p1 value} # mset user:1:name fang user:2:age 22
# 获取多个值
mget key:{id}:{p1} # mget user:1 user:2:age 	1) (nil) 	2) "22"

# 先 get 然后 set 返回原值 
getset key value

List

# 可视作双向队列  Left 0 1 2 .. Right 
# 在左边添加元素
Lpush key v1 v2 ... # 多个元素会一个个添加 v(n) v(n-1) ... v1
# 在右边添加元素
Rpush key before|after pivot(目标) value

# 获取元素 [start end]
Lrange key start end 
# 下标获取元素
Lindex key index
# 插入元素
linsert key index value

# 移除 左边第一个数据
Lpop key
# 移除 右边第一个数据
Rpop key

# 长度
Llen key

# 移除值 count代表移除多少个
Lrem key count value
# 截断  只保留[start end]元素
trim key start end

# 移除列表最后一个元素,并移动到新的 list
rpoplpush fromkey toKey

# 更新元素
lset key index value

set

# 添加元素
sadd key value

# 查看所有元素
sMemebers key
# 检查是否存在 1-->存在 0-->不存在
sIsMember key value
# 元素个数
sCard key

# 删除
srem key v1 v2 ...
# 随机移除一个元素
spop key

# 随机挑选成员
sRandomMember key count(数量)

# 移动成员
smove fromSet toSet value

# 差集
sDiff set1 set2 ...
# 交集
sInter set1 set2 ...
# 并集
sUnion set1 set2 ...

Hash(key-map)

# 添加 map-key  存在时 重写
hset key map-key value
# 添加多个
hmset key k1 v1 k2 v3 ...

# 获取
hget key key
# 获取多个
hmget key k1 k2 ...
# 获取所有 以键值对写出
hgetall key
# 获取所有的 key
hKeys key

# 删除
hdel key map-key

# 元素个数
hlen key

# 检查元素
hExists key map-key

# 自增 自减
incr key map-key  		  # 自增
decr key map-key  		  # 自减
incrby key map-key number  # 自增步长
decrby key map-key number  # 自减步长

# 当不存在时设置
setnx key map-key value		# set if not exist

# 多用于对象的存储

Zset(有序集合)

# 添加
zadd key c1 v1 c2 v2 ...

# inf-->极限
# 排序 升序 在 [min max] 之间
zRangeByScors key min max 
# 排序 降序 在 [min max] 之间
zRevRangeByScors key max min 

# 查看元素
zRange key min max

# 移除元素
zRem key value

# 查看元素个数
zCard key
# 查看给定区间元素个数
zCount key min max

特殊数据类型

geospatial(地理位置)

# 添加 两级无法直接添加
# 经度 -180   ~ +180
# 维度 -85.05 ~ +85.05
geoAdd key 经度 维度 name

# 获取地理位置
geoPos key name

# 获取两人距离 其中一个不存在 返回空   
# km --> 千米		 m --> 米	 mi --> 英里	 ft --> 英尺 
geoDist key name1 name2 km

# 以某一点为中心 找某一半径内元素
geoRadius key 经度 维度 半径 km/m/mi/ft 
	[withdist(显示到中心的距离)] [withcoord(显示经纬度)] [count(查找数量)]
# 以元素为中心
geoRadiusByMember key name 半径 km/m/mi/ft 
	[withdist(显示到中心的距离)] [withcoord(显示经纬度)] [count(查找数量)]

# 查看
zRange key start stop

# 移除
zRem key name

Hyperloglog(基数)

# 一个集合中不重复元素的个数 {1,2,3,4,5,5} --> 5

# 添加
PFadd key v1 v2 ...
# 统计基数
PFcount key
# 合并
PFmerge key(目标) key1 key2 ...

BitMaps

# 按位存储  0 1 
setbit key index 0/1

# 查询
getbit key index

# 统计 默认找 1 的
bitCount key [start end]

ithcoord(显示经纬度)] [count(查找数量)]

查看

zRange key start stop

移除

zRem key name


### Hyperloglog(基数)

```shell
# 一个集合中不重复元素的个数 {1,2,3,4,5,5} --> 5

# 添加
PFadd key v1 v2 ...
# 统计基数
PFcount key
# 合并
PFmerge key(目标) key1 key2 ...

BitMaps

# 按位存储  0 1 
setbit key index 0/1

# 查询
getbit key index

# 统计 默认找 1 的
bitCount key [start end]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值