初学Redis之Redis学习笔记之基础命令篇

这篇开始学习Redis,与spring boot并行学习。

安装redis

redis github
选择与自己电脑匹配的版本,我这边选择ZIP包
解压后,配置环境变量(这样就不需要输入redis路径啦,一劳永逸~)
配置完成后,启动redis
打开cmd,输入以下命令
redis-server.exe redis.windows.conf
测试需要重新打开一个cmd,不能关掉第一个
redis-cli.exe -h 127.0.0.1 -p 6379
注意:6379是redis默认端口
在这里插入图片描述
到这,安装就搞定啦。

redis有哪些数据类型呢?

string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(sortedSet有序集合)

1.string,是二进制安全,可以包含任何对象,包括图片,序列化对象等。
注意:每个键最大存储512M
常用字符串命令:

命令描述
append key value如果key存在,则将value添加到已存在value的后面。如果不存在则相当于set
set key value设置指定key的值
get key获取指定key的值,若key值不存在,则返回nil。若key值不为字符串,则返回错误
getrange key start end返回key中字符串的值的子字符
getset key value设置一个key的值,并返回旧值。如果key中没有旧值,则返回nil。通常可以与INCR一起使用。
mget key key …返回一个或多个给定key的值,如果其中有一个值不存在则返回特殊值nil,所以改命令永不失败。
mset key value key value …同时设置一个或多个key、value的值,如果key值存在则覆盖旧值
MSETNX用法与mset等同,但是MSETNX具有原子性,如果key值存在,则所有key值都不设置,要么全部设置,要么全部不设置。
SETEX key seconds value将值value关联到key,并为key设置生存时间:seconds秒。SETEX具有原子性,设值和设置生存时间是同时进行的
SETNX key value将值value关联到key,当且仅当key不存在时操作。如果key存在则不进行任何操作
SETRANGE key offset value覆盖key对应的值,从偏移量offset开始。例如:value 为 888837744 这时 offset为7 设置值为1,则覆盖为:88883711
STRLEN key返回key值对应的value值的长度

set 语法为

SET key value [EX seconds] [PX milliseconds] [NX|XX]

可选参数:
EX 设置键过期时间为seconds秒

set key value EX 100 与 setex key 100 value 等同

PX 设置键过期时间为milliseconds毫秒

set key value PX 20000

NX 只在键不存在的情况进行设置操作

set key value NX 与 setnx key value 等同

XX 只在键存在的情况下进行设置操作

set key value XX

同时XX或EX可以和EX、PX进行混合使用

set key value EX 100 NX
set key value PX 100 XX

如果key不存在,服务端则返回nil,如果存在则返回value
若get的key不是字符串,则返回一个错误

2.hash

是一个string类型的field字段和value值的映射表,特别适合存储对象,redis每个hash都有232-1键值对(40多亿)

常用命令:

命令描述
hset key field value将哈希表key的域field的值设为value,如果key存在,则覆盖新值
HSETNX key field value将哈希表key的域field的值设为value,当且仅当域不存在,若域存在则不进行操作
HMSET key field value field value …同时将多个field-value(域-值)设置到哈希表key中,会覆盖哈希表中已存在的域
HGET key field返回哈希表key中给定域的值,给定域或给定key不存在,则返回nil
HMGET key field field …返回哈希表中一个或多个给定域的值,如果给定域不存在,则返回nil
HGETALL key返回哈希表key中所有域和值,值会再紧跟再域之后,所以返回值的长度是哈希表的两倍
HEXISTS key field判断哈希表中key给定域是否存在,存在返回1,否则返回0
HDEL key field field …删除哈希表中key的一个或多个给定域,如果给定域不存在则忽略, 若redis版本在2.4以下,HDEL只允许删除单个给定域,若需要再一个原子时间内删除多个,请将命令放在MULTI、EXEC块内
HINCRBY key field increment为哈希表中key的给定域做增量操作,增量值可以为负数(即做减法),若给定域不存在,那么在执行之前初始化为0。若给定域的值为字符串,则报错。本操作值限制在64bit有符号数字内
HKEYS key返回哈希表的key中所有的域,若不存在返回空表
HLEN key返回哈希表中key的域的数量,若不存在返回0
HVALS key返回哈希表key中所有域的值的表,若不存在则为空表

3.list
是简单的字符串列表,按插入的顺序排序。你可以插入一个值到列表的头部或者尾部。一个列表最多可以包含232-1个元素(40多亿)

命令描述
MLPOP key key … outtimeLPOP的阻塞版本,若当给定列表中没有元素可供弹出,就会阻塞等待超时时间或者等待新元素进入list。当给定多个key时,按key先后检查每个列表弹出第一个非空列表的头元素
BRPOP key key … outtime当给定多个key时,按key先后检查每个列表,弹出第一个非空列表的尾元素。其他与MLPOP一致。
RPOPLPUSH source destination主要执行两个操作:1.返回列表source的尾元素2.将返回的元素放到列表destination的头元素。 这是一个安全的队列
BRPOPLPUSH source destination timeout这是RPOPLPUSH的阻塞版本,若source不为空则和RPOPLPUSH一样,否则就阻塞。一直等到超时时间或者有客户端为source 执行 LPUSH或RPUSH行为。其余都与RPOPLPUSH一致
RPOP key移除并范围列表key的尾元素,若key不存在返回nil
LINDEX key index返回列表key下表为index的元素。若index超过list长度则返回nil。可以用-1表示尾部0表示头部
LINSERT key afterbefore pivot value
LLEN key返回列表key的长度,若key不存在则相当于空表返回0,若不是list,返回一个错误
LPOP key移除并返回key列表的头元素,若key不存在则返回nil
LPUSH key value value …将一个或多个value从左到右放入到表头,如 插入a、b、c返回值就为c、b、a。若key不存在直接执行LPUSH操作,若key存在但不是列表,则返回错误
LPUSHX key value将value插入到列表key的表头,当且仅当key存在并且是列表。若key不存在,则不进行操作。
LRANGE key start stopstart和stop都以0位底,返回以偏移量start和stop为范围的元素,若start值大于列表最大下表end,则判断为空表。若stop比end大,则将end设置为stop。
LREM key count value根据count移除与value相等的元素。count定义:1.count>0从表头开始找,移除count个元素。2.count<0从表尾开始找,移除count绝对值个元素。3.count=0,移除表中所有与value相同的元素
LSET key index value将key列表中,下标为index的值设置为value。若index超过列表长度,则返回错误。
LTRIM key start stop对列表的修剪,两列表中只保留限定区域内(start-stop)的内容,区域外都要删除。
RPUSH key value value …将一个或多个value插入到列表key的表尾。按值从左到右插入到表尾,如:插入a、b、c则返回值为a、b、c
RPUSHX key value将单个value插入到列表key的表尾,当且仅当key存在并且为列表。若key不存在,则不进行操作。

4.set 集合
redis的set是一个无序集合,集合的元素都是唯一的,这就说明集合中不允许出现重复数据。redis的集合是通过哈希表实现的,所以删除、增加、查找复杂度都有O(1)

常用命令:

命令描述
SADD key member member…将member插入到集合中,若集合中存在member则忽略。若key不存在,则创建只包含一个member的集合。若key不是集合,则报错
SCARD key返回集合key的基数,即集合中所有成员的数量,若key不存在,返回0
SDIFF key key…返回一个集合的全部成员, 该集合是给定集合的差集
SDIFFSTORE destination key key …返回集合与SDIFF一致,但是将返回的集合放到destination中,若destination存在则覆盖。
SINTER key key …返回一个集合的全部成员,该集合是给定集合的交集
SINTERSTORE destination key key …返回集合与SINTER一致,但是把返回的集合存入了destination中,若destination存在,则覆盖
SISMEMBER key member判断集合key中是否存在成员member,若有则返回1,若没有或key不存在则返回0
SMEMBERS key返回集合中的所有成员,key不存在返回空集合
SMOVE source destination member将member从source中移到destination。若source中不存在member不执行操作,返回0。否则将member移到destination中并将source的member移除。若destination中以存在member,则只讲source的member移除。若source或destination不为集合,则返回错误
SPOP key移除并返回key中的任意一个成员
SRANDMEMBER key [count]若只给定key,则随机返回一个成员。count定义:1.count>1并且小于集合的长度则返回count个成员的数组,数组中的成员各不相同,若大于集合的长度则返回整个集合。2.count<0,则返回一个数组,这个数组的成员可能会重复多次,数组的长度为绝对值count
SREM key member [member…]移除集合key中一个或多个member,不存在的member则忽略。在redis2.4版本以前只允许移除单个member
SUNION key [key …]返回一个集合,该集合是所有给定集合的并集。时间复杂度为O(N),N是给定集合成员数量之和
SUNIONSTORE destination key [key…]返回的集合与SUNION返回的集合一致,但是将返回的结果保存到了destination中。destination存在则覆盖,destination可以是key本身。

5.SortedSet 有序集合
与集合一致,都是string类型元素的集合,且不能重复。不同的是,有序集合中的成员都会关联一个double类型的分数,根据分数从小到大进行排序。有序集合中的成员是不能重复,但是分数可以重复。
常用命令: TODO

命令描述
ZADD key score member [score member…]将一个或多个member和对应的score放到集合中。若member已经是有序集的成员,可以改变score的值。score可以是整数或者双精度浮点数。若key存在且不是有序集合则返回错误。
ZCARD key返回有序集合key的数量
ZCOUNT key min max返回有序集合中在min<=score<=max范围内的数量
ZINCRBY key increment member将key集合内的成员member的score加上增量increment,返回member的新的score值
ZRANGE key start stop [WITHSCORES]返回序集内指定范围的成员。若stop大于序集的最大长度,则返回序集的所有成员,并按从小到大进行排序(ZREVRANGE排序与之相反,其他一致)。start 和 stop都以0位,若下标查询最后一个 stop 可为-1 倒数第二个可为-2 以此类推。添加了WITHSCORES则使成员和对应的score一起返回:member1,score1 …
ZRANGEBYSCORE key min max [WITHSCORE][LIMIT offset count]返回序集集合内min<=score<=max之间的成员,集合排序有score从小到大排序。若score相同,使用字典序来排序。详情参见
ZRANK key member返回序集内member成员的排序,以score从小到大进行排序,若要以score从大到小排序,则使用ZREVRANK
ZREM key member [member…]移除序集中key内指定的一个或多个member,并返回移除member的数量,不包括被忽略的member。若member不存在则忽略。若key不存在则返回错误。redis2.4以下一次只能移除一个成员
ZREMRANGEBYRANK key start stop移除序集内排名(RANK)区间的成员,RANK从小到大进行排序,stop以-1为底,代表最后一个成员,以-2为底则代表倒数第二个成员,以此类推。
ZREMRANGEBYSCORE key start stop移除序集内所有在min<=score<=max返回内的成员
ZSCORE key member返回序集key对应的成员的score值

6.Pub\Sub(发布/订阅)

是一种消息通信模式,发布者(Pub)发送消息,订阅(Sub)者接受消息。
常用命令:

命令描述
PUBLIC channel message将message发送给指定频道channel
PSUBSCRIBE pattern [pattern…]订阅一个或者多个给定模式的频道,每个模式可以用做匹配符,例如:news. 所有前缀为news.的所有频道等
PUBSUB CHANNELS [pattern]列出至少有一个订阅者的频道,若没有设置pattern则列出所有频道,若有设置,则列出pattern匹配的频道
PUBSUB NUMSUB [channel1 channel2]返回给定频道的订阅者数量,订阅模式的客户端不计算在内
PUBSUB NUMPAT返回客户端订阅的所有模式的数量之和。
PUNSUBSCRIBE [pattern [pattern…]]指示客户端退订所有给定模式,若没有设置给定模式,则退订PUBSCRIBE订阅的所有模式
SUBSCRIBE channel [channel…]订阅一个或多个频道的信息
UNSUBSCRIBE [channel [channel…]]指示客户端退订一个或多个频道,若channel没有设置,则退订SUBSCRIBE订阅的所有频道

7.Transaction (事务)

redis事务可以一次执行多个命令,有以下三个特征:

  • 批量操作会再开启事务(MULTI)后在EXEC命令前,放入队列缓存中。
  • 执行事务期间,若有命令b出现问题,命令a执行成功不会回滚,命令c继续执行。
  • 执行事务期间,多有其他客户端执行命令,不会讲命令放入到执行队列中。

事务执行的过程:

  • 开启事务(MULTI)
  • 命令入队列
  • 执行事务(EXEC)

常用命令:

命令描述
WATCH key [key…]监听一个或多个key,若事务执行之前这个或这些key被其他命令改动,则事务会被打断。
DISCARD取消事务,若事务中的key存在监听WATCH,则将取消所有监听。相当于UNWATCH
UNWATCH取消WATCH对key的所有监听,若在执行UNWATCH之前已经执行了EXEC或DISCARD,那么就不再执行UNWATCH,因为执行EXEC就执行事务,因此WATCH命令效果将会产生。执行DISCARD会取消事务,也将取消WATCH。
MULTI标记一个事务块的开启,事务块内的命令将以顺序放入到队列中,最后以EXEC命令原子性的执行事务

8.连接 (connection)

连接命令主要用于连接redis服务器

常用命令:

命令描述
AUTH password通过设置配置文件requirepass值(CONFIG set requirepass ‘密码’)使用密码来保护redis服务器连接。使用密码后,每次连接redis服务器都要用AUTH解锁,否则无法使用其他命令,若密码与设置的值匹配不上则提示invalid password,否则提示ok
ECHO message返回一个特定的信息,测试时使用
PING客户端向服务器发送PING,若服务端响应则返回一个PONG。通常用于测试服务器是否还在运作,否则可以用来测量延迟性
QUIT请求关闭服务器与当前客户端的连接,一旦所有等待中的回复顺利返回到客户端,则关闭连接。
SELECT index切换到指定的服务器,服务器索引号以数字值指定,以0作为起始索引值,默认使用0号数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值