Redis简介、类型及基本使用
是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求(非关系型的、分布式的、开源的、水平可扩展的)
优点:
对数据高并发读写(原因:内存级别读写)
对海量数据的高效率存储和访问
对数据的可扩展和高可用性
缺点:
Redis(ACID处理非常简单)无法做到太复杂的关系数据库模型
Redis是以key-value store存储,data structure service数据结构服务器。键可以包含:(string)字符串,哈希,(list)链表,(set)集合,(zset)有序集合。这些数据集合都支持push/pop、add/remove及取交集和并集以及更丰富的操作,Redis支持各种不同的方式排序,为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加到文件里。
正常停止redis服务:
bin/redis-cli -h hostname -p 6379 shutdown
redis数据库常用基础
- 数据库database
默认有16个数据库database,database id类似于数组的下标从0开始到15
默认使用的database是db0 - 切换数据库
select 下标
select 1:切换到db1这个数据库 - 查看database中key的数量
DBSIZE - 清空当前数据库中数据
flushdb - 清空所有数据库中的数据
flushall - 查看redis中key对应value的类型
type 对应key
key命名规范:与MYSQL等关系型数据库不同的是,redis没有命名空间,而且对键名(key)没有强制的要求(除了不能使用的一些特殊字符)。合理的设计键名,有利于防止冲突和项目维护费。
客户端通信协议:
通用的操作:
- 获取所有的key
keys * - 判定某个key是否存在
exists key
如果返回值是1存在,返回值是0 不存在 - 设置key的过期时间
expire name 10
expire key 剩余时间(s) - 查询剩余过期时间
ttl name
ttl key,返回与距离过期的时间(秒),
当key不存在的时候返回 -2,
当key存在但是没有设置过期时间:-1,否则过会过期时间
五大数据类型:
- String:字符串
可以存储任何数据,包括图片或者序列化对象
字符串value最大可以是512M - HASH:哈希
类似于Java中Map,一个键值对的集合
一个String类型的file和value的映射表
特别适用存储一个对象 - List:列表
简单的字符串列表,按照插入顺序排序
可以添加元素到列表的头部或者尾部
底层:实际上一个链表,便于插入和删除 - set:集合
String类型的无序集合
集合中不允许出现重复的元素
可以在服务器端完成多个set集合的聚合操作 - zset:有序集合
和set集合是一样的,
每个元素都会关联一个Double类型分数(权重),通过该分数进行从小到大的排序
成员是唯一的,但是分数(score)却可以重复