redis基础篇

目录

基本操作

Redis基本数据类型

String字符串

操作命令

应用场景

Hash哈希

操作命令

应用场景

List 列表

操作命令

应用场景

set集合

操作命令

应用场景

Zset 有序集合

操作命令

应用场景


基本操作

默认有 16 个库(0-15),可以在配置文件中修改,默认使用第一个 db0。

切换数据库:select 0

清空当前数据库:flushdb

清空所有数据库:flushall

存值:set qingshan 2673

取值:get qingshan

查看所有键:keys *

获取键总数:dbsize

查看键是否存在:exists qingshan

删除键:del qingshan jack

重命名键:rename qingshan pengyuyan

查看类型:type qingshan

Redis基本数据类型

redis的数据类型有String、Hash、Set、List、Zset、Hyperloglog、Geo、Streams。

String字符串

可以用来存储字符串、整数、浮点数。

操作命令

设置多个值(批量操作,原子性):mset qingshan 2673 jack 666

设置值,如果 key 存在,则不成功:setnx qingshan  此操作可以实现分布式锁,客户端A在setnx key时成功则获取到锁,处理完业务逻辑后使用del key释放锁。不成功说明该key已存在,锁被其他客户端持有。

如果释放锁失败导致其他客户端获取不到锁,那么可以加过期时间:SET key value [EX seconds] [PX milliseconds] [NX|XX]      set lock1 1 EX 10 NX

  • EX second:设置键的过期时间为second秒
  • PX millisecond:设置键的过期时间为millisecond毫秒
  • NX:只在键不存在时,才对键进行设置操作
  • XX:只在键已经存在时,才对键进行设置操作
  • SET操作成功完成时,返回OK,否则返回nil

获取多个值:mget qingshan jack

获取值长度:strlen qingshan

字符串追加内容:append qingshan good

获取指定范围的字符:getrange qingshan 0 8

(整数)值递增:incr qingshan      incrby qingshan 100

(整数)值递减:decr qingshan       decrby qingshan 100

应用场景

缓存热点数据、分布式锁setnx、全局ID INCRBY、计数器INCR

Hash哈希

包含键值对的无序散列表。value 只能是字符串,不能嵌套其他类型。

Hash 与 String 的主要区别

  • 把所有相关的值聚集到一个 key 中,节省内存空间
  • 只使用一个 key,减少 key 冲突
  • 当需要批量获取值的时候,只需要使用一个命令,减少内存/IO/CPU 的消耗

操作命令

hset h1 f 6
hset h1 e 5
hmset h1 a 1 b 2 c 3 d 4

hget h1 a
hmget h1 a b c d
hkeys h1
hvals h1
hgetall h1

hget exists h1
hdel h1
hlen h1

应用场景

string可以做的,hash都可以做;购物车:key:用户 id;field:商品 id;value:商品数量。

List 列表

存储有序的字符串(从左到右),元素可以重复。可以充当队列和栈的角色。

操作命令

元素增减:

lpush queue a
lpush queue b c

rpush queue d e
lpop queue
rpop queue

blpop queue
brpop queue

取值

lindex queue 0
lrange queue 0 -1

应用场景

用户 消息时间线  timeline:因为 List 是有序的,可以用来做用户时间线

消息 队列:

List 提供了两个阻塞的弹出操作:BLPOP/BRPOP,可以设置超时时间。
BLPOP:BLPOP key1 timeout 移出并获取列表的第一个元素, 如果列表没有元素
会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOP:BRPOP key1 timeout 移出并获取列表的最后一个元素, 如果列表没有元
素会阻塞列表直到等待超时或发现可弹出元素为止。
队列:先进先出:rpush blpop,左头右尾,右边进入队列,左边出队列。
栈:先进后出:rpush brpop

set集合

String 类型的无序集合,最大存储数量 2^32-1(40 亿左右)。

操作命令

添加一个或者多个元素:sadd myset a b c d e f g

获取所有元素:smembers myset

统计元素个数:scard myset

随机获取一个元素:srandmember key

随机弹出一个元素:spop myset

移除一个或者多个元素:srem myset d e f

查看元素是否存在:sismember myset a

应用场景

抽奖:随机获取元素  spop myset

点赞 、签到、打卡:

  • 这条微博的 ID 是 t1001,用户 ID 是 u3001。
  • 用 like:t1001 来维护 t1001 这条微博的所有点赞用户。
  • 点赞了这条微博:sadd like:t1001 u3001
  • 取消点赞:srem like:t1001 u3001
  • 是否点赞:sismember like:t1001 u3001
  • 点赞的所有用户:smembers like:t1001
  • 点赞数:scard like:t1001
  • 比关系型数据库简单许多。

商品 标签:用 tags:i5001 来维护商品所有的标签。

  • sadd tags:i5001 画面清晰细腻
  • sadd tags:i5001 真彩清晰显示屏
  • sadd tags:i5001 流畅至极

Zset 有序集合

操作命令

添加元素:zadd myzset 10 java 20 php 30 ruby 40 cpp 50 python

获取全部元素:zrange myzset 0 -1 withscores    zrevrange myzset 0 -1 withscores

根据分值区间获取元素:zrangebyscore myzset 20 30

移除元素:zrem myzset php cpp

统计元素个数:zcard myzset

分值递增:zincrby myzset 5 python

根据分值统计个数:zcount myzset 20 60

获取元素 rank:zrank myzset java

获取元素 score:zsocre myzset java

应用场景

排行榜:

id 为 6001 的新闻点击数加 1:zincrby hotNews:20190926 1 n6001
获取今天点击最多的 15 条:zrevrange hotNews:20190926 0 15 withscores

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一个初级程序员,学习能力是非常重要的。只有不断学习和进步,才能在程序员这个行业中保持竞争力。 在Java程序员的分级中,初级程序员是其中的一级。根据我的理解,Java程序员的分级主要有四级,分别是初级程序员、中级程序员、高级程序员以及技术专家/架构师/全栈工程师。初级程序员在Java开发方面具备一定的基础知识和技能,但还需要进一步的学习和实践来提高自己的能力。 关于Redis,它通常被称为数据结构服务器,因为它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合等。初级程序员在使用Redis时,可以利用其强大的功能解决一些数据库查询存在的弊端,提高系统的性能和效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【职业规划】第一:程序员分级之初级程序员](https://blog.csdn.net/baidu_25310663/article/details/129688788)[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%"] - *3* [redis初级入门(了解)](https://blog.csdn.net/weixin_50731080/article/details/116075131)[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、付费专栏及课程。

余额充值