专栏首页blog(为什么会重名,真的醉了)Redis-各数据类型常用命令(含使用示例)

Redis-各数据类型常用命令(含使用示例)

文章目录

  • 写在前面
  • 命令组
    • Connection
    • Key
    • Server
  • 五大数据类型
    • String
    • List
    • Set
    • Hash
    • Zset
  • 三种特殊数据类型
    • Geo
    • Hyperloglog
    • Bitmap

写在前面


Redis的全部命令详情可以在官网查询点此Redis系列文章专栏 命令不自己敲一遍,都是白搭,就算忘了也可以翻这篇博客。

命令组

Connection


命令

作用

示例

ping

ping服务器 ,无参返回pong有参返参

select index

切换数据库(默认16个数据库,index从0开始)

Key


命令

作用

示例

exists key

返回key是否存在

del key

删除key,返回删除数量

move key db

移动key到另一个数据库

type key

返回key存储类型

keys pattern

返回正则表达式搜索结果,如keys *查看所有

expire key seconds

设置key过期时间,过期自动删除

ttl key

返回key剩余时间(time to live)

Server


命令

作用

示例

flushdb

清空当前数据库数据

flushall

清空所有数据库所有数据

dbsize

返回当前数据库keys数量

五大数据类型

String


计数器、对象缓存存储等

命令

作用

示例

set key value

将key赋值为value

get key

返回key的值,不存在返回nil

append key value

追加一个值到key上

strlen key

返回string长度

incr key

加1

decr key

减1

incrby key increment

加上一个数

decrby key increment

减上一个数

getrange key start end

获取子串,闭区间,第一个下标从0开始,-1表示最后一个,-2倒数第二个,以此类推

setrange key offset value

替换子串

setex key seconds value

设置key的值和过期时间

setnx key value

如果不存在则set(SET if Not eXists) ,常用于分布式锁

mset key value [key value …]

批量设置

mget key [key …]

批量获取

msetnx key value [key value …]

批量设置如果key不存在,同setnx,一起成功一起失败(只要有一个key存在则命令全部失败,即视为一个事务)

getset key value

先set再get

List


消息队列、堆栈等

命令

作用

示例

lpush key value [value …]

向list左边插入值(left push),若不存在则创建之,并返回list大小

rpush key value [value …]

向list右边插入值(right push),若不存在则创建之,并返回list大小

lrange key start stop

获取list指定范围内的元素,闭区间,第一个下标从0开始,-1表示最后一个,-2倒数第二个,以此类推

lpop key

移除list左边第一个元素,并返回所移除元素值

rpop key

移除list右边第一个元素,并返回所移除元素值

lindex key index

通过索引获取list值

lrem key count value

移除前count次出现的值为value 的元素

ltrim key start stop

截取list

rpoplpush source destination

从source移除最后一个元素,并将其加到destination左边

lset key index value

设置list的值

linsert key BEFORE/AFTER pivot value

在pivot前或后面插入一个值

Set


命令

作用

示例

sadd key member [member …]

向集合插入值,若set不存在则创建之,注意元素不能相同,返回插入成功数量

smembers key

返回集合所有元素

sismember key member

判断集合是否包含member,返回1包含,0不包含

scard key

返回集合内元素数量

srem key member [member …]

从集合里删除元素,返回成功删除的个数

srandmember key [Count]

随机返回集合内一个元素

spop key [Count]

随机删除集合内元素,返回所删元素

smove source destination member

从source集合中移动member元素到destination集合中

sdiff key [key …]

返回两集合差集

sinter key [key …]

返回两集合交集

sunion key [key …]

返回两集合并集

sdiffstore destination key [key …]

将差集存入destination集合中,返回元素个数

sinterstore destination key [key …]

将交集存入destination集合中,返回元素个数

sunionstore destination key [key …]

将并集存入destination集合中,返回元素个数

在这里插入图片描述

Hash


map<>key,key[field]=value 用于常变动的数据,同时Hash适合对象,String适合字符串。

命令

作用

示例

hset key field value

设置哈希集key中field字段的值。若字段不存在创建之并返回1,否则覆盖之并返回0。

hget key field

返回哈希集key中field字段所关联的值

hmset key field value [field value …]

设置哈希集中多个字段的值

hmget key field [field …]

返回哈希集中多个字段的值

hgetall key

返回哈希集所有字段和值

hdel key field [field …]

删除字段及其值

hexists key field

判断指定字段是否存在(1存在0不存在)

hkeys key

只获取所有字段(field)

hvals key

只获取所有值(value)

hincrby key field increment

对字段的值加上一个数

hsetnx key field value

如果字段不存在才设置字段和值(返回1),存在则操作无效(返回0)

Zset


有序集合,即比set多个权值z用来排序。 用于排序、优先队列等,如排行榜、top N

命令

作用

示例

zadd [NX/XX]: [CH] [INCR] score member [score member …]

添加时可以指定多个分数/成员对,若成员已添加则更新分数,并更新到正确排序位置,若分数相同则按字典序。

zrange key start stop [WITHSCORES]

返回区间内的元素,WITHSCORES可以将分数与元素一起返回,升序

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

返回有序集合中分数在min和max之间的所有元素,min和max可以是-inf和+inf表示正负无穷。升序

zrevrange key start stop [WITHSCORES]

返回区间内的元素,降序

zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]

返回有序集合中分数在min和max之间的所有元素,降序

zrem key member [member …]

删除元素

zcard key

获取元素个数

zcount key min max

获取分数在min和max间的元素个数

zpopmax key [COUNT]

删除集合中分数最高的count个元素,count默认1,并返回所删元素及其分数

zpopmin key [COUNT]

删除集合中分数最低的count个元素,count默认1,并返回所删元素及其分数

三种特殊数据类型

Geo


Geo底层是Zset存储,所以也可以用Zset命令操作Geo。 推算地理位置信息,比如共享位置,附近的人,打车距离等。

  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。

命令

作用

示例

geoadd key longitude latitude member [longitude latitude member …]

将指定的地理空间位置(经度、纬度、名称)添加到指定的key中。

geopos key member [member …]

获取经纬度

geodist key member1 member2 [unit]

获取两个位置的距离(dist)

georadius key longitude latitude radius m/km/ft/mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT coun t] [ASC/DESC]

以给定的经纬度为中心, 返回半径内包含的所有元素

georadiusbymember key member radius m/km/ft/mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT coun t] [ASC/DESC]

以指定元素为中心, 返回半径内包含的所有元素

geohash key member [member …]

返回位置元素的Geohash表示。hash串越接近距离越近

Geo底层是Zset存储

Zset可参考前面

Hyperloglog


基数统计(不重复的数),比如PV(网页浏览量)统计(一个人多次访问也只算一次) 重点是耗内存非常小,统计 2 64 2^{64} 264只要12KB左右.

命令

作用

示例

pfadd key element [element …]

存储元素到HyperLogLog结构中,若基数变返回1,否则返回0

pfcount key [key …]

返回近似基数

pfcount destkey sourcekey [sourcekey …]

将多个sourcekey取并集存入destkey

Bitmap


位存储(即01两种状态),比如用于签到打卡,登录状态等 底层是String

命令

作用

示例

setbit key offset value

设置或者清空key的value(01字符串)在offset处的bit值。返回在offset处原来的bit值

getbit key offset

获取在offset处的bit值

bitcount key [start end]

统计给定区间内被设置为1的bit数

原创不易,请勿转载本不富裕的访问量雪上加霜 ) 博主首页:https://blog.csdn.net/qq_45034708

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis-事务和锁

    Redis事务可以一次执行多个命令,事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务特性ACID原...

    唔仄lo咚锵
  • Redis-Java项目应用(Jedis、SpringBoot整合、工具类模板)

    怎么解决上面客户端乱码?可能是序列化方式不一样(默认Jdk),我们需要把对象序列化,自定义redisTemplate,使用Jackson来序列化。

    唔仄lo咚锵
  • 最小生成树-Magicpig密室出逃(Kruskal+并查集)

    Kruskal算法是按边权从小到大依次加入边,如果某次加边产生了环(并查集判断),就扔掉这条边,直到加入了n-1条边,即形成了一棵树。

    唔仄lo咚锵
  • 开发人员必备Redis知识点基础命令键命令string命令hash结构listset结构sorted set

    JavaEdge
  • Switch XCI转NSP工具 - 4NXCI下载

    命令用不习惯的可以下载GUI的版本,文件命名大致为4nxci-v4.03_GUI.zip

    前端博客 : alili.tech
  • 如何处理redis集群的hot key和big key

    redis 集群部署方式大部分采用类 Twemproxy 的方式进行部署。即通过 Twemproxy 对 redis key 进行分片计算,将 redis ke...

    akayzhang
  • Java 快速排序 关于起始方向的选择问题 为什么一定要从右边开始

    最后i、j 停留的位置的值肯定是要 小于 key 的 此时交换索引 j 和最左边元素key 符合将小于key的值放到key左边这一条件

    heasy3
  • 在微博微信场景下学习Redis数据结构

    这个是微信公众号的文章阅读量数量的统计,可以通过redis的string数据结构来解决。使用incr原子操作命令,redis的key是article:readc...

    程序员小强
  • Redis学习二(数据操作).

    在 redis-cli 中使用中文时,必须打开 --raw 选项,才能正常显示中文。

    JMCui
  • redis数据结构、持久化、缓存淘汰策略

    Redis 单线程高性能,它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。redis利用epoll来实现IO多路...

    业余草

扫码关注云+社区

领取腾讯云代金券