2、 redis的基本操作

目录

基本操作

设置字符串值

设置多个键值的字符串值

键不存在时,设置字符串值

过期

设置多少秒或者毫秒后过期

设置在指定Unix时间戳过期

删除过期

查看剩余生存时间

查找健

键类型

键是否存在

键重命名

键删除

获取值

获取多个值

返回旧值并设置新值

如果键不存在,就创建并赋值

字符串长度

追加字符串

获取子字符串

覆盖字符串

步长1的增减

步长增减

位图bitmap

设置某一位上的值

获取某一位上的值

位操作

Set集合

增加一个或多个命令

移除一个或者多个元素

返回集合包含的所有元素

集合的无序性

srandmember key [count]

返回集合中元素的个数

随机从集合中移除并返回这个被移除的元素

把元素从原集合移动到目标集合

差集

交集

并集

类似set集合

增加一个或多个元素

移除一个或者多个元素

显示分值

增加或者减少分值

返回元素的排名(索引)

返回元素的逆序排名

返回指定索引区间元素

返回指定索引区间元素

返回指定分值区间元素

返回指定分值区间元素

移除指定排名范围的元素

移除指定分值范围的元素

并集

交集

列表和hash

list列表

命令

Hash散列

设置单个字段

设置多个字段

返回字段个数

判断字段是否存在

返回字段值

返回多个字段值

返回所有的键值对

返回所有字段名

返回所有值

在字段对应的值上进行整数的增量计算

在字段对应的值上进行浮点数的增量计算

删除指定的字段


基本操作

设置字符串值

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

EX 设置过期时间,秒,setex key seconds value

PX 设置过期时间,毫米,psetex key milliseconds value

NX 键不存在,才能设置,等同于setnx key value

XX 键存在时,才能设置

设置多个键值的字符串值

mset key value [key value ...]

mget key value [key value ...]

键不存在时,设置字符串值

Msetnx key value [key value]

过期

设置多少秒或者毫秒后过期

expire key seconds

pexpire key milliseconds

设置在指定Unix时间戳过期

expireat key timestamp

pexpireat key milliseconds-timestamp

删除过期

persist key

生存时间

time to live,key的剩余生存时间

查看剩余生存时间

TTL key

PTTL key

key存在但没有设置TTL,返回-1

key存在,但还在生存期内,返回剩余的秒或者毫秒

key曾经存在,但已经消亡,返回-2(2.8版本之间返回-1)

查找健

keys pattern

pattern取值

*任意长度字符

?任意一个字符

[]字符集合,表示可以是集合中的任意一个

键类型

type key

键是否存在

exists key

键重命名

rename key newkey

renamenx key newkey

键删除

del key [key ...]

获取值

get key

获取多个值

mget key [key ...]

返回旧值并设置新值

getset key value

如果键不存在,就创建并赋值

字符串长度

strlen key

追加字符串

append key value

获取子字符串

getrange key start end

索引值从0开始,负数表示从字符串右边向左数起,-1表示最后的字符

覆盖字符串

setrange key offset value 从offset开始覆盖

步长1的增减

incr key

decr key

字符串值会被解释成64位符号的十进制整数来操作,结构依然转成字符串

步长增减

incrby key decrement

decr key decrement

字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串

位图bitmap

位图不是真正的数据类型,它是定义在字符串类型中

一个字符串类型的值最多能存储512M字节内容

位上限:2^(9+10+10+3)=2^32b

设置某一位上的值

setbit key offset value

offset偏移量,从0开始

value不写默认为0

获取某一位上的值

getbit key offset

返回指定0或者1在指定区间上第一次出现的位置

bitpos key bit [start] [end]

位操作

bitop operation destkey key [key ...]

operation可以是 and,or,not,xor

and 求逻辑并,保存到destkey

or求逻辑或

not求逻辑非

xor求逻辑异或

统计指定区间上值为1的个数

bitcount key [start] [end]

从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后为字节

登录不同的库

redis-cli --help

redis-cli -n 2

清除当前库数据

flushdb

清除所有库中的数据

flushall

Set集合

无序的、去重的

元素是字符串类型

最多包含2^32-1元素

增加一个或多个命令

sadd key member [member ...]

如果元素已经存在,则自动忽略

移除一个或者多个元素

srem key member [member ...]

元素不存在,自动忽略

返回集合包含的所有元素

smembers key

如果集合元素过多,需要遍历,可能会造成服务器阻塞,生产环境应避免使用

检查给定元素是否存在于集合中

sismember key member

集合的无序性

注意, SMEMBERS 有可能返回不同的结果,所以,如果需要存储有序且不重复的数据使用有序集合,存储有序可重复的使用列表

随机返回集合中指定个数

srandmember key [count]

如果为正数,且小于集合基数,那么返回一个包含count个元素的数组,数组中的元素各不相同,数组中的元素各不相同。如果count大于等于集合基数,那么返回整个集合

如果为负数,那么命令返回一个数组,数组中的元素可能会重复很多次,而数组的长度为count的绝对值

如果为0,返回空

如果不指定,随机返回一个元素

返回集合中元素的个数

scard key

键的结果会保存信息,集合长度就记录在里面,所以不需要遍历

随机从集合中移除并返回这个被移除的元素

spop key

把元素从原集合移动到目标集合

smove source destination member

差集

sdiff key [key ...] 从第一个key的集合中去除其它集合和自己的交集部分

sdiffstore desination key [key ...] 将差集结果存储到目标key中

交集

sinter key [key ...] 取所有集合交集部分

sinterstore destination key [key ...] 将交集结果存储在目标key中

并集

sunion key [key ...] 取所有集合并集

sunionstore destination key [key ...] 将并集结果存储在目标key中

SortedSet有序集合

类似set集合

有序的、去重的

元素是字符串类型

每一个元素都关联着一个浮点数分值(Score) ,并按照分值大小从小到大的顺序排列集合中的元素,分值可以相同

最多包含2^32-1元素

增加一个或多个元素

zadd key score member [score member ...]

如果元素已经存在,则使用新的score

移除一个或者多个元素

zrem key member [member ...]

元素不存在,自动忽略

显示分值

zcore key member

增加或者减少分值

zincrby key increment member

increment 为负数就是减少

返回元素的排名(索引)

zrank key member

返回元素的逆序排名

zrevrank key member

返回指定索引区间元素

zrange key start stop [withscores]

如果score相同,则按照字典序列排序

默认按照score从小到大,如果需要score从大到小排序,使用zrevrange

返回指定索引区间元素

zrevrange key start stop [withscores]

返回指定分值区间元素

zrangebyscore key min max [withscores] [limit offset count]

返回score默认属于[min,max]之间,元素按照score升序排列,score相同字典序

limit中offset代表跳过多少个元素,count是返回几个

使用小括号,修改区间为开区间

-inf 和 +inf表示负无穷和正无穷

返回指定分值区间元素

zrevrangebyscore key min max [withscores] [limit offset count]

返回score默认属于min max之间,降序

移除指定排名范围的元素

zremrangebyrank key start stop

移除指定分值范围的元素

zremrangebyscore key min max

返回集合中元素个数

zcard key

并集

zunionstore destination numkeys key [key ...] [weights weight] [aggregate sum|min|max]

numkeys 指定key的数量,必须

weights 选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重

aggregate ,指定并集结果的聚合方式

sum 将所有集合中某一个元素的score值之和作为结果集中该成员的score值

MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值

MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值

交集

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

numkeys指定key的数量,必须

WEIGHTS选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重

AGGREGATE选项,指定并集结果的聚合方式

SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值

MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值

MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值

列表和hash

list列表

基于linked list实现

元素是字符串类型

列表头尾增删快,中间增删慢,增删元素是常态

元素可以重复出现

最多包含2^32-1

列表的索引

从左到右,从0开始

从右到左,从-1开始

命令

B block 块,阻塞

L left 左

R right 右

X exist 存在

左右或者头尾压入元素

LPUSH key value [value ...]

LPUSHX key value

RPUSH key value [value ...]

RPUSHX key value

左右或者头尾弹出元素

LPOP key

RPOP key

从一个列表尾部弹出元素压入到另一个列表的头部

RPOPLPUSH source destination

返回列表中指定范围元素

LRANGE key start stop

LRANGE key 0 -1 表示返回所有元素

获取指定位置的元素

LINDEX key index

设置指定位置元素的值

LSET key index value

列表长度,元素个数

LLEN key

从列表头部开始删除值等于value的元素count次

LREM key count value

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count

count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值

count = 0 : 移除表中所有与 value 相等的值

去除指定范围外的元素

ltrim key start stop

在列表中某个存在的值(pivot)前或后插入元素

LINSERT key BEFORE|AFTER pivot value

key和pivot不存在,不进行任何操作

阻塞

如果弹出的列表不存在或者为空,就会阻塞

超时时间设置为0,就是永久阻塞,直到有数据可以弹出

如果多个客户端阻塞在同一个列表上,使用First In First Service原则,先到先服务

左右或者头尾阻塞弹出元素

BLPOP key [key ...] timeout

BRPOP key [key ...] timeout

从一个列表尾部阻塞弹出元素压入到另一个列表的头部

BRPOPLPUSH source destination timeout

Hash散列

由field和关联的value组成的map键值对

field和value是字符串类型

一个hash中最多包含2^32-1键值对

设置单个字段

HSET key field value

HSETNX key field value

key的filed不存在的情况下执行,key不存在直接创建

设置多个字段

HMSET key field value [field value ...]

返回字段个数

hlen key

判断字段是否存在

hexists key field

key或者field不存在,返回0

返回字段值

HGET key field

返回多个字段值

HMGET key field [field ...]

返回所有的键值对

HGETALL key

返回所有字段名

HKEYS key

返回所有值

HVALS key

在字段对应的值上进行整数的增量计算

HINCRBY key field increment

在字段对应的值上进行浮点数的增量计算

HINCRBYFLOAT key field increment

删除指定的字段

HDEL key field [field ...]

hash的用途

节约空间

不适合hash的情况

使用二进制位操作命令:因为Redis目前支持对字符串键进行SETBIT、GETBIT、BITOP等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据

使用过期键功能:Redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对储存在字符串里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Redis数据库是一个内存数据库,通过key-value键值对的方式进行数据存储。它的优点包括访问速度快、适用于缓存系统和存储大量活跃数据,可以提高网站的响应速度。\[1\]在Java,有两个比较出名的连接Redis的驱动包,分别是Jedis和Redisson,我们可以使用Jedis来进行程序操作Redis。\[3\]以下是一些基本的Redis操作方法: - 使用`new Jedis(host, port)`创建Jedis对象,其host是Redis服务器地址,port是Redis服务端口。 - 使用`set(key, value)`方法设置字符串类型的数据。 - 使用`get(key)`方法获取字符串类型的数据。 - 使用`hset(key, field, value)`方法设置哈希类型的数据。 - 使用`hget(key, field)`方法获取哈希类型的数据。 - 使用`lpush(key, values)`方法设置列表类型的数据。 - 使用`lpop(key)`方法从列表左侧弹出元素。 - 使用`rpop(key)`方法从列表右侧弹出元素。 - 使用`del(key)`方法删除指定的key。\[3\] #### 引用[.reference_title] - *1* [redis基本操作](https://blog.csdn.net/m0_50782114/article/details/128119748)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Redis基本使用!](https://blog.csdn.net/weixin_50769390/article/details/127134134)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值