【redis学习篇1】redis基本常用命令

目录

redis存储数据的模式

常用基本命令

一、set

[二、keys pattern](#二、keys pattern)

[keys +字符串当中携带问号](#keys +字符串当中携带问号)

[keys +字符串当中携带*号](#keys +字符串当中携带*号)

[keys + 【^+字母】](#keys + 【^+字母】)

[keys +*](#keys +*)

三、exists

四、del

五、expire

[5.1 ttl命令](#5.1 ttl命令)

5.2key删除策略

5.2.1惰性删除

5.2.2定期删除

六、type

key的数据类型

string

incr:自增1,仅限数字类型

[incrby key +一个具体的数量](#incrby key +一个具体的数量)

[decr key](#decr key)

[incrbyfloat key +一个值](#incrbyfloat key +一个值)

append

[getrange key +start +end](#getrange key +start +end)

[setrange key start+替换的字符串](#setrange key start+替换的字符串)

[strlen key](#strlen key)

hash

[hset key file1 value1](#hset key file1 value1)

[hget key file1](#hget key file1)

[hexists key file1](#hexists key file1)

[hdel key file1](#hdel key file1)

[hkeys key](#hkeys key)

list

lpush

lrange

rpush

lpop

lindex

[llen key](#llen key)

set

Set的常见操作

SADD命令

[SMEMBERS 命令](#SMEMBERS 命令)

[SISMEMBER 命令](#SISMEMBER 命令)

SPOP命令

SRANDMEMBER命令

[SMOVE 命令](#SMOVE 命令)

[SREM 命令](#SREM 命令)

zset

一、zset数据类型概述

二、zset的常见操作


redis存储数据的模式

一般情况下,都是以 key value的模式进行存储的。

这种存储的结构类似于哈希表(HashMap);

但是redis不同于哈希表的地方在于:

redis的key只可以是string类型;value可以是其他数据结构。

而HashMap的key和value都可以是任意的数据结构。

对于value的类型 ,有字符串哈希表列表集合有序集合等数据结构的类型

而操作这些不同的数据结构,就会用到不同的命令。


常用基本命令

一、set

用法:set 【key】 【value】

在这里面,key和value都是字符串;由用户手动输入key和value的值;

当敲回车之后提示OK说明已经设置成功了;


二、keys pattern

pattern为包含特殊符号的字符串;

keys +字符串当中携带问号

例如:keys h?llo

?只能匹配一个字符;因此返回的字符可能是:hello/hallo等;就是问好只能占据一个字符;


keys +字符串当中携带*号

例如:当输入:keys h*llo的时候

返回的内容可能是:heeeee llo;habcdllo也是就*可以代替若干个字母


keys + 【^+字母】

这种情况,是为了排除某个字母设置的。


keys +*

查询当前服务器上面的所有key


三、exists

判定key是否存在

用法:exists +key的名称:返回key存在的个数

假如一个key hello存在,那么 exists + hello就会返回1.

假如一个key hello,hallo存在;那么 exists +hello+hallo 就会返回2.


四、del

删除某个key.

del +key的名称:删除某一个key;删除成功返回1;

del +key1 +key2:删除key1和key2;删除成功返回2;


五、expire

expire的作用是给指定的key设定过期时间;key超出了指定的时间就会自动失效..

expire +key + seconds;设置成功返回1,设置失败返回0.

seconds为key有时效的秒数.

5.1 ttl命令

这个命令是为了判断一个key的剩余过期时间是多少;

ttl+key:返回某个key的剩余过期时间

如果返回-1说明没有设置过期时间;

如果返回-2说明已经过期;

5.2key删除策略

5.2.1惰性删除

key的过期时间到了,但是还没有删除,key还存在;当最后一次访问这个key的时候发现已经过期了就删除;

5.2.2定期删除

定期删除策略,并不一定是在一定时间内删除所有的key,而是每次抽取一部分的key,进行过期时间验证,也就是类似于一个抽查的过程;因为redis是单线程的程序,因此不太好一次遍历所有的key;否则容易造成宕机。


六、type

type+key的类型:返回当前的key的数据类型是什么;


key的数据类型

string

set key value ex +key有效的时间(设置某个key有效时间为10秒)

set key1 vlaue1 NX(某个key1不存在才设置,如果存在就返回nil)

set key2 value2 XX (某个key2存在才设置,存在则设置失败)

get key3:只支持字符串类型的value


incr:自增1,仅限数字类型

令某一个key增加1:

set key 10

incr key

get key:返回11;

incr操作的key如果不存在,那么就当作自增1来表示。


incrby key +一个具体的数量

对于某一个key的value增加10.


decr key

针对某一个数值的key执行-1操作.


incrbyfloat key +一个值

对于某一个key自增对应的一个值


append

set key hello;

append key world;==> key变成了:hello world


getrange key +start +end

getrange helloworld +0+-1

含义:截取这个字符串的从左边开始的第一个 元素到从右边开始的第一个元素之间的字符串;

返回:helloworld;


getrange helloworld +1+-2

含义:截取这个字符串的从左边开始的第二个 元素到从右边开始的第二个元素之间的字符串;

返回内容:elloworl


setrange key start+替换的字符串

setrange +helloworld + 1 +aaa

含义就是:从左往右的1号元素开始,也就是从字母e开始,往后替换三个字符为aaa.

==>haaaoworld


strlen key

返回的是key的长度==>包含的字符长度


hash

每一个hash类型的key,都是按照这样的结构存储的;在上图当中,key的名称是name1;

在这个key下面有好几个键值对:key-value;


hset key file1 value1

对于key设置:file1+value1

hget key file1

对于key,获取到file1的value是多少

hexists key file1

对于key,判断其中的file1属性是否存在

hdel key file1

删除的是key当中的file1

hkeys key

获取到key当中的所有hash的键;


list
lpush

lpush key 1 2 3 4==>含义是:使用头插法插入:1 2 3 4;因此执行完之后;在这个key当中元素的顺序是: 4,3,2,1

lrange

lrange key start end

这一个命令,相当于对于key做了一个截取操作,start的位置为从左往右的元素下表,end的位置为从从右往左的第一个元素下标;

rpush

rpush key 1 2 3 4

这样,相当于尾插;这个时候key当中的元素存储顺序为:1 2 3 4;

lpop

从list左侧取出元素,相当于头删;

lindex

lindex + key:返回的是下标对应的元素:如果一个list当中存在下面的元素:

1,2,3,4,5,6,7,8;

那么 lindex key 3==>返回的就是元素4;负数同理,从右往左计算索引。

llen key

返回key当中的list个数。


set

类似于JAVA当中的hashset数据结构;元素是无序的,并且不可以重复;

Set的常见操作

二.SET命令

集合的元素,代表 member

SADD命令

往集合当中添加元素,返回添加成功的元素个数。

语法: SADD key member [member,member,...]

SMEMBERS 命令

展示集合当中元素

语法 :SMEMBERS key

SISMEMBER 命令

判断一个元素在不在set当中

语法:SISMEMBER key member

SPOP命令

一般表示从末尾删除元素,但由于set集合是无序的,此处是随机删除COUNT 个元素。

语法:pop key [count]

SRANDMEMBER命令

随机获取集合当中的count个元素。

语法:srandmember key [count]

SMOVE 命令

将一个元素从源set(source)取出,并且放入目标的set集合(destination)

语法:SMOVE SOURCE DESTINATION MEMBER

SREM 命令

将集合set删除元素,一次删除多个个member

语法:srem key member [member ...]

集合之间的操作:交、并、差集

交集命令:SINTER key [key,key,...] 或者 SINTERSTORE DESTINATION key [key,key,...] 把结果放在DESTINATION当中。

并集命令:SUNION key [key ,...] 或者 SUNIONSTORE DESTINATION key [key,key,...] 把结果放在DESTINATION当中。

差集命令:SDIFF key [key ,...] 或者 SDIFFSTORE DESTINATION key [key,key,...] 把结果放在DESTINATION当中。


zset

Redis的zset数据类型,即有序集合(Sorted Set),是一种非常特别且有用的数据结构。以下是对zset数据类型的详细介绍及其常见操作的归纳:

一、zset数据类型概述

  1. 特性

    • zset是Redis中字符串类型元素的集合,且集合中的成员是唯一的,不允许重复。
    • 每个成员都会关联一个double类型的分数(score),这个分数用于对集合中的成员进行排序。分数可以重复。
    • 集合中的成员会根据分数从小到大进行排序,如果分数相同,则按照字典顺序排序。
  2. 底层实现

    • 在Redis的早期版本中,zset的底层数据结构可以是压缩列表(zipList)或跳表(skipList)。
    • 当有序集合的元素个数小于一定数量(如128个)且每个元素的值小于一定字节数(如64字节)时,Redis会使用压缩列表作为底层数据结构。
    • 当不满足上述条件时,Redis会使用跳表作为底层数据结构。
    • 在Redis 7.0及更高版本中,压缩列表数据结构已经被废弃,改由listpack数据结构实现。

二、zset的常见操作

  1. 添加元素

    • 使用ZADD命令向zset中添加一个或多个元素,并指定它们的分数。
    • 语法:ZADD key score1 member1 [score2 member2 ...]
  2. 获取元素

    • 使用ZRANGE命令获取zset中指定排名范围内的元素,可以选择是否同时返回分数。
    • 语法:ZRANGE key start stop [WITHSCORES]
    • 类似地,ZREVRANGE命令可以获取zset中指定排名范围内的元素,但按分数从高到低排序。
  3. 获取元素数量

    • 使用ZCARD命令获取zset中元素的数量。
    • 语法:ZCARD key
  4. 获取元素排名

    • 使用ZRANK命令获取元素在zset中的排名(从0开始,按分数从小到大排序)。
    • 语法:ZRANK key member
    • 类似地,ZREVRANK命令可以获取元素在zset中的排名,但按分数从高到低排序。
  5. 获取元素分数

    • 使用ZSCORE命令获取元素的分数。
    • 语法:ZSCORE key member
  6. 删除元素

    • 使用ZREM命令从zset中删除一个或多个元素。
    • 语法:ZREM key member [member ...]
  7. 为元素分数增加增量

    • 使用ZINCRBY命令为元素的分数加上指定的增量。
    • 语法:ZINCRBY key increment member
  8. 按分数范围获取元素

    • 使用ZRANGEBYSCORE命令获取zset中分数在指定范围内的元素,可以选择是否同时返回分数。
    • 语法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    • 类似地,ZREVRANGEBYSCORE命令可以获取zset中分数在指定范围内的元素,但按分数从高到低排序。
  9. 按分数范围删除元素

    • 使用ZREMRANGEBYSCORE命令删除zset中分数在指定范围内的元素。
    • 语法:ZREMRANGEBYSCORE key min max
  10. 按排名范围删除元素

    • 使用ZREMRANGEBYRANK命令删除zset中指定排名范围内的元素。
    • 语法:ZREMRANGEBYRANK key start stop
  11. 交集和并集操作

    • 使用ZINTERSTORE命令计算多个zset的交集,并将结果存储在新的zset中。可以指定每个zset的权重和聚合方式。
    • 语法:ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE sum|min|max]
    • 使用ZUNIONSTORE命令计算多个zset的并集,并将结果存储在新的zset中。同样可以指定权重和聚合方式。

相关推荐
阳光男孩012 小时前
MySQL基础之约束
android·数据库·mysql
茶馆大橘2 小时前
Spring Validation —— 参数校验框架
java·后端·学习·spring
AI人H哥会Java2 小时前
【PostgreSQL】运维篇—— 实战案例分析:从需求到实现
运维·数据库·sql·postgresql
五羟基己醛3 小时前
【学习笔记】SquareLine Studio安装教程(LVGL官方工具)
笔记·学习·ui
bug菌¹3 小时前
滚雪球学Redis[1.1讲]:什么是Redis?
数据库·redis·缓存
阿望要努力上研究生4 小时前
若依项目搭建(黑马经验)
java·redis·node.js·maven·管理系统
歌者長門5 小时前
AD21中如何给过孔添加盖油
笔记·学习·pcb工艺
zeroner_5 小时前
【SQL】DDL语句
数据库·sql·mysql
七折困5 小时前
DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)
数据库·sql·mysql