Redis
* 定义:基于**内存的****分布式**NoSQL数据库
:Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
* 所有的数据存储在内存中,并有持久化机制。
* 每次Redis重启,会从问价中重新加载数据到内存,所有读写都只基于内存。
* 功能:提供高性能高并发的数据存储
* 特点:
* 基于C语言开发,与硬件的交互性很好
* 基于内存实现数据的读写,读写性能很快
* 分布式的,所以扩展性和稳定性更好
* 支持事务(单线程事务,效果不好),拥有各种丰富的数据结构
* String:类似Java中的字符串
* Hash:类似Java中的Map集合
* List:有序可重复的元素集合
* Set:无需且不重复的元素集合,一般用于去重
* Zset:Sorted Set,有序且不可重复
* 应用场景
* 缓存:用于实现大数据量高并发的存储【**临时性存储**】
* 数据库:用于实现高性能的小数据量的读写【**永久性存储**】
装Linux版本不要忘了装C语言的编译器
yum -y install gcc-c++ tcl
* 数据结构
* Redis中所有的数据都是以**KV结构**的形式存在
* K: 作为唯一的标识符,唯一标识一条数据,**固定为String**类型
* V: 真正存储的数据,类型是上文提到的类型[String,String]、[String,Hash]、[String,List]、[String,Set]、[String,Zset]...
* 可以理解为Java中的一个Map集合,能存储多个KV,根据K获取V
* 通用命令
* keys:列举当前数据中key 如:**keys ***
* del key :删除某个KV
* exists key :判断某个key是否存在
* type key:判断这个K对应V的类型
* expire K 过期时间:设置某个K的过期时间,一旦到达这个过期时间,这个K会被自动删除。
* ttl K:查看某个K剩余的存活时间
* select N:1. 切换数据库(正常用不到),Redis默认有16个数据库,db0~db15,个数可以通过配置文件改,但是名称不能改。
2. 默认会进入到db0。
3. Redis只有一层数据结构,所有的数据直接存储在数据库中
* move key N : 将某个Key移动到某个数据库中
* flushdb :清空当前数据库中的所有的key(慎用)
* flashall:清空所有数据库中的key(慎用)
* 各个V数据类型的命令:https://redis.io