一、redis简介:
redis是完全开源免费的,遵守BSD协议(BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。),是一个高性能的key-value数据库。是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化
redis与其他的key-value缓存产品比较有三个特点:
1.redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存中进行使用。
2.redis不仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3.redis支持数据的备份,即master-slave模式(也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机)的数据备份。
redis的优势:
1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3.原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
应用场景:
1.会话缓存(最常用)
2.消息队列(支付)
3.活动排行榜或计数
4.发布、订阅消息(消息通知)
5.商品列表、评论列表
redis数据类型:
redis一共支持五种类型:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。
1.string(字符串)
它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB。
2.hash(哈希)
redis hash是一个键值对的集合, 是一个string类型的field和value的映射表,适合用于存储对象。
redis-cli 是进入redis的客户端的命令
命令:HSET KEY_NAME FIELD VALUE
HSET key field value 将哈希表 key
中的域 field
的值设为 value
。
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
举例:hset key field "520"
HSET key field 获取哈希表key中域field的value值
举例:hget key field
3.list(列表)
是redis简单的字符串列表,按照插入顺序排序
操作命令
lpush ----先进后出,在列表头部插入元素
举例:lpush mylist firstele
rpush -----先进先出,在列表的尾部插入元素
举例:rpush mylist secondele
此时mylist的顺序是{firstele,secondele},secondele是后插入的,使用rpush在尾部插入元素
lrange -----出栈,根据索引,获取列表元素
举例:lrange mylist 0 2 获取mylist里获取索引0---2的元素
llen ----链表长度,元素个数
举例:llen mylist
lpop ----左边出栈,获取列表里的第一个元素
举例:lpop mylist
rpop---- 右边出栈,获取列表里面的最后一个元素
举例:rpop mylist
lindex---根据索引,取出元素
举例:lindex mylist 2 取出mylist里面索引为2的元素
Lrem---根据key,删除n个value
ltrim---根据索引,删除指定元素
lset---根据index,设置value
linsert before---根据value,在之前插入值
linsert after---根据value,在之后插入值
注意
出栈,该元素在链表中,就不存在了
左边,默认为列表的头部,索引小的一方
右边,默认为列表的尾部,索引大的一方
4.set(集合)
string类型的无序集合,不可重复
sadd--添加元素
srem---删除命令
sismember---判断元素是否存在(存在返回1,不存在返回0)
sdiff---返回两个集合中的差集(与集合顺序有关)
举例:sdiff myset myset2 结果:set1 (myset域myset2相差set1)
sinter--- 两个集合中的交集
sunion---两个集合的并集
scard---查看具体数量
srandmember--随机提取元素
sdiffstore ---将两个集合相差的成员存储到另一个集合中
sinterstore---将两个集合交际的成员存储到另一个集合中
sunionstore---并集存储
5.zset(sorted set 有序集合)
是string类型的有序集合,不可重复
sorted set中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序,sorted set 因此非常适合实现排名
ZADD key score member -->添加方法(如果值存在添加,将会重新排序)
举例:zadd nosql 0 003 添加分数为0 值为003的zset(名字是nosql)集合
zcount-->获取指定分数直接成员的个数
举例:zcount nosql 0 0 获取名字叫nosql的zset集合分数在0--0之间的数量
zrem-->删除指定的一个或多个成员
举例:zrem nosql 002 删除成员002(删除多个直接在后面添加)
zscore-->获取指定值的分数
举例:zscore nosql 003 获取成员003的分数
zrangebyscore -->根据指定的分数范围获取值
举例:zrangebyscore nosql 0 10 获取名字为nosql的zset集合里面分数在0--10之间的成员
参考:https://blog.csdn.net/qq_36411874/article/details/82286063
参考:https://blog.csdn.net/middleware2018/article/details/80355418