redis--常用命令

5种类型:字符串类型、散列类型、列表类型、集合类型、有序集合类型

字符串操作

设置键-值

set bar 1

获取所有的键

keys *

判断键是否存在

exists bar

删除键

del key

获取键值的数据类型

type key

获取字符串的长度

strlen key 

设置字符串区域的值

redis> SET key1 "Hello World"
OK
redis> SETRANGE key1 6 "Redis"
(integer) 11
redis> GET key1
"Hello Redis"
redis> 
//如果key不存在的话
redis> SETRANGE key2 6 "Redis"
(integer) 11
redis> GET key2
"\u0000\u0000\u0000\u0000\u0000\u0000Redis"
redis> 

获取区域字符串的值

getrange key start stop

递增数字,让数字自增1

incr key

增加指定的整数

//在key的值上增加2
incrby key 2

增加指定的浮点数

incrbyfloat key increment

在数字类型的键上加上count令其唯一

incr postId : count

减少

decr key 
decrby key 2

向键的末尾增加值

set key hello
append key "world"

获取字符串长度

strlen key

同时获取多个键值

mget key1 key2···

同事设置多个键值

mset key value key2 value2···

获取字符串类型指定二进制位的值

//这个位置是从左往右开始数的
getbit ff 3

设置指定位置二进制的值

setbit ff 3 1

获取字符串类型中二进制是1的个数

bitcount ff 0 1
//这个后面的0,1代表从左往右数的字节数组

逻辑运算

bittop or res ff1 ff2
//其中的or,还可以是and,xor,not,返回值存在res中

散列类型

对应C#中的dictionary
赋值/更新

hset car price 600
//赋值成功返回1,更新成功返回0

取值

hget car name

同时设置多个字段的值

hmset key field1 value1 field2 value2

同时获取多个字段的值

hmget key field1 field2 
hgetall key

判断字段是否存在

hexists key field

当字段不存在时赋值

//存在时不进行任何操作
hsetnx key filed value

增加数字

hincrby key field 60
//如果键不存在则自动创建切设置默认field为0,然后自动增加60

删除字段

hdel key field

获取字段名

hkeys key

获取字段值

hvals key

获取字段的数量

hlen key

列表类型

向列表两端增加元素

//向列表左边增加
lpush key value1 [value2]
//向列表右边增加
rpush key value1 [value2]

从列表两端弹出元素

//弹出左边的元素
lpop key
//弹出右边的元素
rpop key

获取列表中元素的个数

//llen的时间复杂度为O(1)
llen key

获得列表片段

lrange key start stop  // 索引是从0开始的,返回值包含stop位的元素,支持负索引

删除列表中指定的值

lrem key count value
//count>0时,从左边开始删除count个值为value的元素
//count<0时,从右边开始删除
//count=0时,全删

获取指定索引的元素值

lindex key index

只保留指定片段

ltrim key start end   //start和end都保留

向列表中插入元素

linsert key before | after pivot value
//从左到右查到pivot的值,并根据before还是after决定怎么插入

将元素从一个列表转到另一个列表,这是一个原子性操作

rpoplpush source destination

随机返回keys中的一个

randomkey

设置某个键的过期时间

expire key 20 //设置20s的过期时间
expire //秒为单位
pexpire key milliseconds  粒度更小的时间控制
expireat key timestamp //最后一个是linux时间戳
pexpireat key milliseconds-timestamp 
pexpireat 已某个时间点为过期时间 【微妙】

查看key的生存时间

ttl key
pttl key // 返回以毫秒为单位的过期时间

expireat 已某个时间点为过期时间 【毫秒】

问题:
set ff:22:tt jklsjklf 这种字符类型的定义是个什么鬼?冒号是干什么的?

集合命令

添加/删除元素

sadd key member1 [member2]  // 返回成功加入元素的数量

srem key member1 [member2]

返回集合中的所有元素

smembers key

判断是否在元素中

sismember key member

集合间的运算

sdiff key1 [key2]  // A-B
sinter key1 [key2] // A交B
sunion key1 [key2] // A+B
sdiffstore destination key1 [key2]
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]

统计集合元素个数

scard key

随机获取count个数据

srandmember key [count]

随机从集合中弹出一个元素

spopkey

有序集合

增加元素

zadd key score member [score member ]
zadd tt +inf spike
//+inf代表正无穷,-inf代表负无穷

删除元素

zrem key member [member]

按照分数排名从小到大的删除

zremrangbyrank key start stop   // 按照分数从小到大的顺序来删除

按照分数范围删除

zremrangbyscore key min max

获得元素的分数

zscore key member

获取元素的排名

zrank key member
zrevrank key member

获取指定分数内元素的个数

zcount key min max

获取在某个范围内的元素列表

//start和stop是元素的索引位
zrange key start stop [withscores]  //加上withscores时,返回值会带上分数
zrevrange key start stop [withscores] // 从大到小排列

获取分数在某个范围内的元素列表

zrangebyscore key  min max [withscores] [limit offset count]
zrangebyscore key (80 +inf //不包含80,到正无穷
zrangebyscore key 60 +inf limit 1 3 //获取分数高于60的,且从第二个人开始的3个人

增加某个元素的分数

zincrby key increment member
zincrby key -4  jerry // 给jerry减少4分

计算有序集合的交集

zinterstore destination numkeys key1 [key2] [weights weight [weigth..]]  [aggregate sum|min|max]
zinterstore res 2 key1 key2 weights 2 3 sum
// 存储结果放在res中,共2个键,权重分别乘以2,3,取交集中的大数

计算有序集合中的并集

zunionstore 同zinterstore的用法一样

事务

multi
exec
watch
//如果watch检测了一个设置了生存时间的键,这个键到期自动删除,这种情况不会被watch认为该键被改变
unwatch

生存时间

取消生存时间

persist  key  // 重新赋值也会清除键的生存时间

sort排序命令

sort key // key 可以是列表类型,集合类型,有序集合类型
//对有序集合类型排序时,会忽略分数,仅仅对元素自身的值进行排序,默认把所有数据转换成双精度浮点数来比较
sort key alpha  //加上参数alpha,按照字典顺序排列非数字元素
sort key [limit offset count] 返回指定范围内的结果

sort by这个还是看视频吧,文档讲不清

任务队列

brpop // 当列表中没有元素时,brpop命令会一直阻塞住连接,直到有新元素加入
rpop
blpop
lpop

发布订阅模式

发布

publish channel2.2 hi  //返回订阅者的数量

订阅

subscribe channel2.2
//进入客户端后,只能使用下面的四个命令:subscribe / unsubscribe / psubscribe / punsubscribe 

按规则订阅

psubscribe channel.?* 

按规则退订

punsubscribe  [pattern[pattern]]

管道

管道,这种方式减少客户端与Redis的通信次数来实现降低往返时延累计值的目的

命令监控

monitor
任何命令都会在这个redis-cli中打印出来,不过这个非常影响性能,一个客户端使用monitor会降低redis近一半的负载能力
这个命令只适合用来调试和纠错

转载于:https://www.cnblogs.com/weloveshare/p/5772861.html

### Redis Server 常用命令及其使用方法 Redis 是一种高性能的键值存储系统,支持多种数据结构。`redis-server` 是 Redis 的核心服务程序,负责启动 Redis 数据库实例并处理客户端请求。以下是 `redis-server` 和其他相关工具的一些常用命令及说明。 #### 1. 启动 Redis 服务 可以通过指定配置文件来启动 Redis 实例,默认情况下会读取 `/etc/redis.conf` 或当前目录下的默认配置文件。 ```bash redis-server /path/to/redis.conf ``` 如果未提供配置文件,则会以默认参数运行[^1]。 #### 2. 关闭 Redis 服务 通过向正在运行的 Redis 进程发送信号关闭服务: ```bash kill $(cat /var/run/redis.pid) ``` 或者直接在 `redis-cli` 中执行以下命令安全退出: ```bash SHUTDOWN ``` #### 3. 配置 Redis 参数 可以在运行时动态修改某些配置项而无需重启服务。例如更改最大内存限制: ```bash CONFIG SET maxmemory 1gb ``` 永久保存这些改动到配置文件中可以使用: ```bash CONFIG REWRITE ``` #### 4. 查看 Redis 当前配置 获取所有当前生效的配置选项以及对应的值: ```bash CONFIG GET * ``` 对于特定参数查询其具体数值: ```bash CONFIG GET timeout ``` #### 5. 测试性能基准 利用内置工具 `redis-benchmark` 对服务器进行压力测试评估吞吐量等指标: ```bash redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000 ``` 此命令表示连接本地主机端口为6379的服务端发起一百个并发线程共十万次请求来进行效能分析[^1]。 #### 6. 客户端交互模式 除了单独调用各个API接口外还可以进入互动式的CLI界面方便调试开发工作流: ```bash redis-cli > ping PONG > set foo bar OK > get foo "bar" exit ``` 以上列举了一些关于如何管理和操作Redis server的基础指令集^, 更深入的学习还需要查阅官方文档或者其他权威资料进一步探索高级特性和最佳实践方案. ```python import redis r = redis.Redis(host='localhost', port=6379, db=0) # 设置字符串类型的key-value对 r.set('test_key','hello world') # 获取对应value print(r.get('test_key').decode()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值