Redis基础

Redis是什么?

是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

Redis与其他key-value缓存特点?

1.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储

3.Redis支持数据的备份,即master-slave模式的数据备份

用途

1.内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务

2.取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面

3.模拟类似于HttpSession这种需要设定过期时间的功能

4.发布、订阅消息系统

Redis数据类型(https://www.cnblogs.com/ysocean/p/9102811.html

每种数据类型内部对应两种编码

Redis key键的常用:keys * 所有键, exists key的名字,判断某个key是否存在, move key db   --->当前库就没有了,被移除了, expire key 秒钟:为给定的key设置过期时间, ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期, type key 查看你的key是什么类型,

Redis string(最大不能超过512M)的常用: set/get/del/append/strlen,Incr/decr/incrby/decrby,一定要是数字才能进行加减, getrange/setrange, mset/mget/msetnx(带m的是more的缩写意思是获得多个)

字符串对象的编码可以是int,raw或者embstr。

       1、int 编码:保存的是可以用 long 类型表示的整数值。

  2、raw 编码:保存长度大于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)。

  3、embstr 编码:保存长度小于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)。

Redis 列表(list): lpush/rpush/lrange(这种可以想象成以队列形式进栈,栈首尾是通的,然后根据从上还是下遍历或者出栈), lpop/rpop, lindex,按照索引下标获得元素(从上到下), linsert key  before/after 值1 值2, lrem key 删N个value

列表对象的编码可以是 ziplist(压缩列表) 和 linkedlist(双端链表)。 

当同时满足下面两个条件时,使用ziplist(压缩列表)编码:

  1、列表保存元素个数小于512个

  2、每个元素长度小于64字节

  不能满足这两个条件的时候使用 linkedlist 编码。

Redis集合(Set): sadd/smembers/sismember, srem key value 删除集合中元素, srem key value 删除集合中元素,两个集合的运算:差集:sdiff,交集:sinter,并集:sunion。

集合对象的编码可以是 intset 或者 hashtable。

当集合同时满足以下两个条件时,使用 intset 编码:

  1、集合对象中所有元素都是整数

  2、集合对象所有元素数量不超过512

  不能满足这两个条件的就使用 hashtable 编码。第二个条件可以通过配置文件的 set-max-intset-entries 进行配置。

Redis哈希(Hash):value是键值对的集合,  hset/hget/hmset/hmget/hgetall/hdel, hexists key 在key里面的某个值的key, hkeys/hvals。。常用来存储user这种对象name:xx age :13

哈希对象的编码可以是 ziplist 或者 hashtable。

和上面列表对象使用 ziplist 编码一样,当同时满足下面两个条件时,使用ziplist(压缩列表)编码:

  1、列表保存元素个数小于512个

  2、每个元素长度小于64字节

  不能满足这两个条件的时候使用 hashtable 编码。第一个条件可以通过配置文件中的 set-max-intset-entries 进行修改。

redis有序集合对象:在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 (score可以重复)v2。 zadd/zrange, zrem key 某score下对应的value值,作用是删除元素。 zrevrangebyscore  key 结束score 开始score。

有序集合的编码可以是 ziplist 或者 skiplist。ziplist 编码的有序集合对象使用压缩列表作为底层实现,每个集合元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素的成员,第二个节点保存元素的分值。并且压缩列表内的集合元素按分值从小到大的顺序进行排列,小的放置在靠近表头的位置,大的放置在靠近表尾的位置

 当有序集合对象同时满足以下两个条件时,对象使用 ziplist 编码:

  1、保存的元素数量小于128;

  2、保存的所有元素长度都小于64字节。

  不能满足上面两个条件的使用 skiplist 编码。以上两个条件也可以通过Redis配置文件zset-max-ziplist-entries 选项和 zset-max-ziplist-value 进行修改。

五大数据应用场景:

  对于string 数据类型,因为string 类型是二进制安全的,可以用来存放图片,视频等内容,另外由于Redis的高性能读写功能,而string类型的value也可以是数字,可以用作计数器(INCR,DECR),比如分布式环境中统计系统的在线人数,秒杀等。

  对于 hash 数据类型,value 存放的是键值对,比如可以做单点登录存放用户信息。

  对于 list 数据类型,可以实现简单的消息队列,另外可以利用lrange命令,做基于redis的分页功能

  对于 set 数据类型,由于底层是字典实现的,查找元素特别快,另外set 数据类型不允许重复,利用这两个特性我们可以进行全局去重,比如在用户注册模块,判断用户名是否注册;另外就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。

  对于 zset 数据类型,有序的集合,可以做范围查找,排行榜应用,取 TOP N 操作等。

内容概要:《绿色转型美丽乡村——汾渭平原地区低碳乡村案例集》由西安空气侠环保科技有限公司编写,北京市企业家环保基金会支持,聚焦汾渭平原地区乡村低碳发展的典型实践。报告梳理了国内外相关理论研究及政策背景,展示了中央与地方在低碳乡村发展方面的政策措施。通过五个典型案例,包括芮城县庄上村的“光储直柔”模式、铜川耀州区克坊村的“光伏+普惠金融”、浮山县臣南河村的循环经济模式、澄城县权家河村的“风光储一体化”以及麟游县紫石崖村的“光伏+生态养殖”,详细分析了这些案例的技术路线、项目成效、主要政策、典型经验和存在问题。报告总结了清洁能源在乡村低碳发展中的核心地位,强调了因地制宜发展策略的关键作用,并指出了多重效益综合追求的重要性。 适合人群:从事环保、农业、能源领域研究的专业人士,以及关注乡村低碳发展和可持续发展的政策制定者和社会学者。 使用场景及目标:①为全国其他地区开展乡村能源转型实践提供有益的借鉴;②助力推动我国乡村低碳发展,为实现碳达峰、碳中和目标贡献积极力量;③为政策制定者提供决策参考,促进乡村绿色转型和乡村振兴战略的实施。 其他说明:报告由多家单位参编,感谢北京市企业家环保基金会提供资金支持。文中内容及意见仅代表作者的个人观点,与北京市企业家环保基金会的立场或政策无关。报告期望为全国其他地区开展乡村能源转型实践提供有益的借鉴,助力推动我国乡村低碳发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值