1、NoSQL和关系型数据库区别数据库
NoSQL非关系型数据库:Redis、MongoDB、HBase等,基于Key-Value存储,采用命令操做。缓存
关系型数据库:Oracle、MySQL、DB二、SQL Server等,基于表结构存储,采用SQL操做。服务器
2、Redis简介网络
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为: Remote Dictionary Server(远程数据服数据结构
务),该软件使用C语言编写,是典型的NoSQL数据库服务器。Redis是一个Key-Value存储系统,它支持丰富的数据类型,如String、Hash、List、Set、app
Zset(Sorted Set)。性能
3、Redis特色spa
优势:.net
缺点:线程
内存,若是内存增加过快,须要按期删除数据。
功能,可是仍是有可能完整重同步的,好比新上线的备机。
备注:
在系统中,一般使用Redis作数据缓存使用。
查询缓存:第一次查询时会从数据库中取出数据放入缓存,后续查询都将从缓存中读取数据。
添加/更新缓存:将用户数据经过检测后放入缓存,而后给用户响应,后台开启线程取数据处理。
4、Redis经常使用数据类型
Redis经常使用的数据类型有5种,即String、Hash、List、Set、Zset(Sorted Set):
String--字符串
String是简单的Key-Value 类型,Value不只能够是String,也能够是数字(当数字类型用Long能够表示的时候encoding就是整型,其它都存储在
sdshdr当作字符串),在List、Set和Zset中包含的独立的元素类型都是Redis String类型。String类型的Value最大为512MB。
Hash--字典
Hash是最接近关系型数据库结构的数据类型,能够将数据库中一条记录或程序中一个对象转换成hashmap存放在Redis中。在Memcached中,咱们
常常将一些结构化的信息打包成hashmap,而后在客户端序列化后存储为一个字符串的值 (通常是JSON格式),好比用户的昵称、年龄、性别等。
Hash的键值对个数最多为2^32-1(4294967295)个。
List--列表
List说白了就是链表类型(双端链表),主要功能是push、pop、获取一个范围的全部值等,其中的Key能够理解为链表的名字。在Redis中,List就
是Redis String的列表,按照插入顺序进行排序,好比使用LPUSH命令在List头插入一个元素、使用RPUSH命令在List尾插入一个元素。当这两个命令
之一做用于一个空的Key时,一个新的List就建立出来了。List的元素个数最多为2^32-1(4294967295)个。
Set--集合
Set就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的Set数据结构,能够存储一些集合性的数据。在Redis中,Set就是Redis
String的无序集合,不容许有重复元素,对Set的操做有交集、并集、差集等。Set的元素个数最多为2^32-1(4294967295)个。
ZSet(Sorted Set)--有序集合
和Set相比,Sorted Set是将Set中的元素增长了一个权重参数score,使得集合中的元素可以按score进行有序排列,对于已经有序的Zset,仍然能够
使用SORT命令,经过指定ASC|DESC参数对其进行排序。Zset的元素个数最多为2^32-1(4294967295)个。
5、Redis操做命令
5.一、字符串操做
set key value //设置value值 get key //获取value值 strlen key //获取value长度 incr key //将value加1 incrby key i //将value加i decr key //将value减1 decrby key i //将value减i append key value //将原有key的值拼接上value值
5.二、哈希操做
hset key 字段名 字段值 //设置一组 hmset key 字段名 字段值 字段名 字段值 //设置多组 hget key 字段名 //获取一个字段值 hmget key 字段名1 字段名2 //获取多个字段值 hlen key //获取字段数量 hkeys key //查看字段名 hdel key 字段名 //删除字段名
5.三、列表操做
lpush key value //从头部放入值(key列表存在插入,不存在建立列表插入) rpush key value //从尾部放入值 lpop key //从头部删除一个元素 rpop key //从尾部删除一个元素 lrem key count value //删除多少个值等于value的元素 lindex key index //获取index位置的value值 lrange key start end //获取指定范围的元素 linsert key before|after 元素 要插入的值 //插入元素 lset key index value //更新index位置的value值 llen key //获取列表元素数
5.四、集合操做
sadd key value value //向集合添加元素 srem key value //删除value元素 scard key //获取集合元素数量 smembers key //查看全部元素 srandmember key count //获取count个随机数 sinter key1 key2 //两个集合交集,key1和key2都有 sunion key1 key2 //两个集合并集,去重复合并 sdiff key1 key2 //差集,key1有,key2没有
5.五、有序集合
zadd key score value //向集合添加元素 zrem key value //删除元素 zcard key //元素数量 zrange key start end //获取指定范围的元素(小到大) zrevrange key start end //获取指定范围的元素(大到小) zrevrank key value //获取value索引(大到小) zrank key value //获取value索引(小到大)
5.六、key操做
keys pattern //查看key del key //删除key expire key time //设置有效时间(秒) type key //判断value值类型 rename key newkey //修改key名称
6、Redis文件格式
Redis使用了两种文件格式:全量数据和增量请求。
全量数据:是把内存中的数据写入磁盘,便于下次读取文件时进行加载。
增量请求:是把内存中的数据序列化为操做请求,用于读取文件进行replay获得数据,序列化的操做包括SET、RPUSH、SADD、ZADD。
备注:Redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。
7、Redis应用场景
(1)会话缓存(Session Cache)
(2)全页缓存(FPC)
(3)队列
(4)排行榜/计数器
(5)发布/订阅
参考自:
https://blog.csdn.net/weixin_39671217/article/details/78021732