目录
SQL 与 NoSQL 的区别?
SQL NoSQL
存储结构 二维表格结构 不固定的,通常存储在数据集中(比如键值对、文档、索引、图形结构、时间序列等)
扩展方式 纵向扩展(提升单机硬件性能) 横向扩展(增加服务器节点数量)
事务支持 基于ACID原则,事务控制更稳定,细粒度更高 基于BASE原则,稳定性和细粒度控制方面不如SQL
典型代表 MySQL Oracle SQL-Server PostgreSQL Redis Memcached MongDB ElasticSearch Prometheus
Redis 是 C语言开发的,开源的,基于内存运行的NoSQL
数据存储结构 键值对(Key/Value KV)
默认端口号 TCP/6379
数据类型: 五大基础类型 String(字符串) List(列表) Hash(哈希/散列) Set(无序集合) Zset/Sorted Set(有序集合)
三种特殊的数据类型 HyperLogLogs(基数统计) Bitmaps (位图) geospatial (地理位置)
Redis 为什么那么快?
1)redis是基于内存运行的,数据读写都是在内存中完成的
2)数据读写采用单线程模式,避免了多线程切换带来的CPU性能消耗,同时也不要考虑各种锁的问题
3)采用IO多路复用模型,可以使线程处理更多的网络连接请求,提高并发能力
网站性能压测工具 ab jmeter
redis 性能压测工具 redis-benchmark -h <redis服务地址> -p <服务端口> -a <密码> -c <并发连接数> -n <请求数> -d <数据大小> -t <命令列表> -q
redis 客户端工具 redis-cli -h <redis服务地址> -p <服务端口> -a <密码> [命令]
String
set 键 值
get 键
del 键
List
lpush|rpush 键 值1 值2 值3 ....
lrange 键 起始下标 终止下标
0(第一个) -1(最后一个)
lrem 键 元素个数 元素值
del 键
Hash
hset 键 字段1 值1 字段2 值2 ....
hget 键 字段
hgetall 键
hkeys 键
hvals 键
hdel 键 字段
del 键
Set
sadd 键 值1 值2 值3 ....
smembers 键
srem 键 值
del 键
Zset
zadd 键 序号1 值1 序号2 值2 ....
zrange 键 起始下标 终止下标 [withscores]
0 -1
zrangebyscore 键 起始序号 结束序号
zrem 键 值1 值2 ....
zrembyscore 键 起始序号 结束序号
del 键
通用
type 键 查看键的数据类型
keys 键 * ? 查询键名,支持通配符 * ?
exists 键 判断键是否存在
expire 键 过期时间 为已存在的键设置过期时间
setex 键 过期时间 值 创建string类型的键并设置过期时间
ttl 键 查看键的生命周期时间,-1 永不过期,-2 已过期
rename 旧键 新键 重命名键名,会覆盖已存在的键
renamenx 旧键 新键 重命名键名,不会覆盖已存在的键
dbsize 统计当前库中键的总数
config set requirepass '密码' 设置/修改redis密码
config get requirepass 查看密码
auth '密码' 在redis里验证密码
select 库ID 切换库,默认库ID为 0~15
move 键 库ID 移动键到指定的库
flushdb 清空当前库(慎用)
flushall 清空所有库(慎用)