Redis学习笔记(二)

这篇博客详细介绍了Redis中的List、Set和有序Set数据结构,强调了它们在大数据集合操作和任务队列中的应用。List通过lrange, lpush/rpush等操作实现元素的增删,Set支持交集、并集和差集运算,有序Set则用于排行榜。同时,还涵盖了Redis的通用命令如keys, del, exists等以及持久化策略RDB和AOF。" 130585618,18614589,华为机试:异常打卡记录检测算法,"['java', '算法', '华为机试', '开发语言']
摘要由CSDN通过智能技术生成

1 redis-List

    这里的LIst是LinkedList而不是ArrayLIst
    ArrayList:底层是数组。优点:根据索引的查询极快(与数据量无关)。缺点:数据的增删操作效率极低(数据量越大,效率越低)。
    LinkedList:底层是链表。优点:数据的增删极快(与数据量无关),缺点:根据索引的查询极慢(数据量越大,效率越低)。
    为什么是LinkedList?
    因为在redis中,最多的操作就是对元素的增删。
    使用环境:(1)大数据集合的增删
                      (2)任务队列

    取值:lrange key start stop (lrange key 0 -1 取出所有元素) 从start取到stop,包括首尾,-1则是最后一位。
    赋值:lpush key values 从左边开始添加
               rpush key values 从右边开始添加
    删值:lpop key 删除最左边的元素,并返回该元素
               rpop key 删除最右边的元素,并返回该元素
               当list内没有元素了,则该list也被删除了,返回(nil)
    扩展:获取list的长度 llen key
             根据索引删除指定的元素(效率极低,因为要先赋索引) lrem key count value 从左开始删除count个value,如果count为0 ,则删除所有value。
             根据索引替换元素(效率极低) lset key index value 从左开始角标为index的值替换成vlaue
             从指定位置插入元素: linsert key before value1 value2 在value1的前面插入value2
                                                  linsert key after value1 value2 在value1的后面插入value2
        
          两队排列:rpoplpush list1 list2 (任务队列)将list1最后一个元素弹出,然后添加到list2的头部
          循环队列:rpoplpush list1 list1 将list1的最后一个弹出后添加到最前

2 redis-set

    set集合特点:无序,不重复。
    在redis中,set常用在大数据集合的交集,并集,差集运算。

    赋值:sadd key values 返回该键值对value的长度,不可重复,重复元素只算1
    删值:srem key values
    取值:smembers key 返回该key对应的values
               sismember key value 返回1或0,1则表示存在该元素,0则不存在
    
    集合运算:
          差集:sdiff key1 key2 返回key1对应的set集合有而key2对应的set集合没有的元素
          交集:sinter key1 key2 返回key1对应的set集合和key2对应的set集合中都有的元素
          并集:sunion key1 key2 返回key1对应的set集合和key2对应的set集合中的所有元素,当然重复元素只算一个

    扩展:scard key 统计key对应的set集合元素的数量
               srandmember key 随机返回一个属于key对应的set集合元素
               sdiffstore set3 set1 set2 将set1和set2的差集保存在set3中
               sinterstore set3 set1 set2 将set1和set2的交集保存在set3中
               sunionstore set3 set1 set2 将set1和set2的并集保存在set3中

3 redis-有序set

    手动赋值,1000 小红,500 小明,100 小王 常用于排行榜
    赋值: zadd key scores members
    删值: zrem key members
    取值: zscore key members 
                zcard key
                zrange key start stop [withscores]
                zrevrange key start stop [withscores]

    扩展:zremrangebyrank key start stop 按排名从start删到stop
               zremrangebyscore key min max 按分数范围删除
               zrangebyrank key min max 查看排名范围内的元素
               zrangebyscore key min max 查看分数范围内的元素
               zincrby key increment member 增加指定元素的分数
               zcount key min max 获取在分数范围内的元素个数
               zrank key member 返回该member在排行榜的排名(从小到大)
               zrevrank key member 返回该member在排行榜的排名(从大到小)

4 redis通用命令

    (1)keys pattern :pattern可以是*,也可以是?,*表示0个或多个任意字符,?表示一个任意字符,可以用于匹配相关的key,例如:
        keys * :查询redis中所有key
        keys ????:查询redis中长度为4的key
        keys *name*:查询redis中带有name的key
    (2)del keys :删除键值对
    (3)exists key: 判断是否存在该key
    (4)type key: 返回key对应的value的数据类型
    (5)expire key number:设置key的有效或生存时间,单位:秒
    (6)ttl key:查看key剩下的超时时间,-1表示未设置有效时间,-2表示已过期,过期的键值对将被redis删除

5 redis扩展知识

    (1)消息订阅与发布
        subscribe channel:订阅频道,接收其发布的消息
        publish channel content:在某频道发布消息
        psubscribe channel*:批量订阅频道
    (2)redis多数据库
        redis中有16个数据库,0-15,默认使用的是0号数据库
        切换数据库:select [0-15]
        将一个数据库的键值对移动到另一个数据库:move key [0-15]
        清空当前数据库数据:flushdb 
        清空所有数据库数据:flushall
    (3)redis事务批量化操作
        MySQL事务---------保证数据的完整性和安全
        redis事务---------为了进行语句的批量操作
        开启事务:multi
        提交事务:exec 
        回滚事务:discard    
    (4)redis服务器了解命令
        quit:退出客户端
        dbsize:查看当前数据库中有多少个键值对
        info:查看redis相关信息
    (5)redis的两种持久化策略
        第一种是RDB机制,RDB是redis的默认持久化机制,相当于照快照,可以把很大的数据压缩成很小的.rdb文件保存,优点是保存数据的速度极快,还原数据的速度极快;可用于灾难备份;缺点是因为只要符合RDB机制要求就会照快照,即随时随地在照快照,会占用一部分系统资源,所以内存要比较充裕才能保证系统不崩溃,只适用内存充裕的机器。
    

怎样才符合RDB机制,照快照?

        一.服务器正常关闭时,即./bin/redis-cli shutdown
        二.key满足一定条件时,会照一次快照
            在redis.conf中有配置了save 900 1,save 300 10,save 60 10000
            意思是在900秒内,如果有大于等于1个的key发生变化,则照一次快照;在300秒内,如果有大于等于10个key发生变化,则照一次快照;在60秒内,如果有10000个    
            key发生变化,则照一次快照(变化指键值对的增删改)

 

第二种是AOF机制,默认是关闭的。使用的是日志功能实现持久化。

            开启AOF:修改redis.conf配置文件,将appendonly no 改为appendonly yes
            修改AOF执行策略:三种同步策略:1.everysec,2.always,3.no,1是每秒写入日志文件一次,2是当key发生变化时,将语句写入日志文件,3是不写;通常选择第二种比较安全;即修改redis.conf中的appendfsync always。优点是持续性地占用极少的系统资源,缺点是日志文件太大,不适用于灾难恢复;适用于内存较小的计算机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷是一个教育机构,他们提供了一份关于Redis学习笔记。根据提供的引用内容,我们可以了解到他们提到了一些关于Redis配置和使用的内容。 首先,在引用中提到了通过执行命令"vi /redis-6.2.6/redis.conf"来编辑Redis配置文件。这个命令可以让你进入只读模式来查询"daemonize"配置项的位置。 在引用中提到了Redis会根据键值计算出应该送往的插槽,并且如果不是该客户端对应服务器的插槽,Redis会报错并告知应该前往的Redis实例的地址和端口。 在引用中提到了通过修改Redis的配置文件来指定Redis的日志文件位置。可以使用命令"sudo vim /etc/redis.conf"来编辑Redis的配置文件,并且在文件中指定日志文件的位置。 通过这些引用内容,我们可以得出结论,尚硅谷的Redis学习笔记涵盖了关于Redis的配置和使用的内容,并提供了一些相关的命令和操作示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis学习笔记--尚硅谷](https://blog.csdn.net/HHCS231/article/details/123637379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis学习笔记——尚硅谷](https://blog.csdn.net/qq_48092631/article/details/129662119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值