键值数据库 key value
NoSql
第一章: 差异
#1 structured 结构化
约束 primary unique unsigned
#2 relational 关联的
#3 SQL查询
例 select id, name, age from tb_user where id=1
redis get user:1
mongoDB db.users.find({_id: 1})
elasticsearch GET http://localhost:9200/users/1
#4 事务 ACID 基本一致 无事务
键值类型 Redis 文档类型 MongoDB 列类型 HBase Graph类型 Neo4j
存储方式 磁盘 内存
扩展性 垂直 水平
Remote Dictionary Server 远程词典服务器 基于内存的键值型NoSQL数据库
特征:
键值key-value型 value支持多种不同数据结构,功能丰富
单线程,每个命令具备原子性 低延迟 速度快 基于内存,IO多路复用
-支持数据持久化
-支持主从集群,分片集群
-支持多语言客户端
安装Redis依赖 redius是基于C语言编写 需要安装Redis所需要的gcc依赖:
yum install -y gcc tcl
解压: tar -zxvf redis-6.2.6.tar.gz
进入redis目录: cd redis-6.2.6
运行编辑命令: make && make install 编译 安装
内容: redis-cli 命令行客户端 redis-server
任意目录 redis-server 端口 6379
–默认启动方式
–指定配置启动 流程: 配置文件备份 cp redis.conf redis.conf.bck
修改redis.conf文件配置
bind 0.0.0.0 任意ip地址可以访问
#守护进程,修改为yes后即可后台运行 daemonize yes
#密码,设置后访问redis必须输入密码 requirepass xxxxx
其他常见配置 #监听端口 port
#工作目录 dir
#数据库数量 databases 默认有16个库,编号0-15
#能够使用的最大内存 maxmemory 512mb
#日志文件 默认为空 不记录日志 logfile “redis.log”
启动 redis-server redis.conf
—开机自启
redis客户端
1 命令行客户端
使用方式: redis-cli [options][commonds]
常见options -h IP地址 -p 端口 -a 访问密码
操作命令commonds ping 与redis服务端做心跳测试,服务端正常会返回pong
set name xxx
get name
SELECT 0 0号库
2 图形化客户端
3 编程客户端
redis常见命令
数据结构介绍 key-value
key一般是string类型
value多类型 string hash list set sortedset geo bitmap hyperlog
redis官网 commands 分组
命令行 help help @
redis通用命令 keys组下 @generic
KEYS: 查看符合模板的所有key(通配符) 例 KEYS * KEYS a* 以a开头
DEL: 删除一个指定的KEY
MSET: 批量插入
EXISTS: 判断key是否存在
EXPIRE: 给key设置有效期 有效期到期key被自动删除 EXPIRE key seconds
TTL: 查看KEY的剩余有效期
String类型 底层都是字节数组形式存储,编码方式不同。
SET GET MSET MGET INCR INCRBY 自增,自增指定步长 SETNX (前提key不存在 否则不执行)
Redis的key允许多个单词形成层级结构,多个单词用’:'隔开,
例: 项目名:业务名:类型:id
hash类型 散列 value是无序字典,类似java中的hashmap结构
常见命令 前缀加H field
List类型 双向链表结构 支持正向检索 反向检索
java客户端
Jedis
Jedis本身线程不安全 频繁创建和销毁会有性能损耗 推荐使用连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(); //最大连接
jedisPoolConfig.setMaxIdle(); //最大空闲连接
jedisPoolConfig.setMaxIdle(); //最小空闲连接
jedisPoolConfig.setMaxWaitMillis(); //设置最长等待时间
jedisPool = new JedisPool(jedisPoolConfig, xxx, xxx, timeout, password)
public static Jedis getJedis(){
return jedisPool.getResource();
}