Day12 Redis应用实战-String操作

启动Redis Server

# 复制安装档内的redis.conf 到自己指定的路径下
cp /home/redis/redis-6.2.5/redis.conf /home/redis/config/

# 启动Redis Server使用自己设定好的config
./redis-server /home/redis/config/redis.conf

# 连线至Redis Server
redis-cli -h 127.0.0.1 -p 6379

# 取得目前载入设定的路径
127.0.0.1:6379> config get dir

# 取得目前载入设定的内容
127.0.0.1:6379> config get *

# 修改设定值内容
127.0.0.1:6379> config set loglevel warning
127.0.0.1:6379> config get loglevel #验证

# 显示Redis Server的资讯和统计资料
127.0.0.1:6379> info server
# info後面server参数可以换成下列这些参数,取得相关资讯与统计资料.
# server clients memory persistence stats replication cpu modules errorstats cluster keyspace

  • Redis 执行操作指令不分大小写,但如果是Key则有区分大小写.

  • 也可以透过此环境进行後面的课程
    try redis

Redis 资料型态String

  • Redis中最常使用的型态.

  • 可用指令

    • SET
    • SETNX
    • SETEX
    • SETXX
    • PSETEX
    • GET
    • GETSET
    • STRLEN
    • APPEND
    • SETRANGE
    • GETRANGE
    • INCR
    • INCRBY
    • INCRBYFLOAT
    • DECR
    • DECRBY
    • MSET
    • MSETNX
    • MGET
  • 资料结构

    • value是可以以long型态表示整数值,整数值储存在字串物件的ptr属性,并将物件编码设定为int.
    • value值是字串且长度 < 44 bytes,则将物件使用embstr编码来储存.
    • value值是字串且长度 > 44 bytes,则将物件使用SDS以raw编码来储存.

SET

设定key与value值.

127.0.0.1:6379> set key1 jacky
OK

127.0.0.1:6379> set key2 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
OK

127.0.0.1:6379> set key3 123
OK

127.0.0.1:6379> set key4 123.456
OK

MSET

一次设定多笔key与value值.

127.0.0.1:6379> mset name1 aaa name2 bbb name3 ccc
OK

GET

取得指定key的value值.

127.0.0.1:6379> get key1
"jacky"
127.0.0.1:6379> object encoding key1
"embstr"

127.0.0.1:6379> get key2
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
127.0.0.1:6379> object encoding key2
"raw"

127.0.0.1:6379> get key3
"123"
127.0.0.1:6379> object encoding key3
"int"

127.0.0.1:6379> get key4
"123.456"
127.0.0.1:6379> object encoding key4
"embstr"

MGET

一次取得多个指定key的value值.

127.0.0.1:6379> mget name1 name2 name3
1) "aaa"
2) "bbb"
3) "ccc"

INCR

数值递增1.

127.0.0.1:6379> get key3
"123"

127.0.0.1:6379> incr key3
(integer) 124

127.0.0.1:6379> get key3
"124"

# 此key5不存在
127.0.0.1:6379> get key5
(nil)

# 此时key会自动写入1
127.0.0.1:6379> incr key5
(integer) 1

127.0.0.1:6379> get key5
"1"

INCRBY

数值依照设定数值进行递增.

127.0.0.1:6379> get key5
"1"

# 指定递增数为10并依此对key的value值进行递增10
127.0.0.1:6379> incrby key5 10
(integer) 11

127.0.0.1:6379> get key5
"11"

DECR

数值递减1.

127.0.0.1:6379> get key5
"11"

127.0.0.1:6379> decr key5
(integer) 10

127.0.0.1:6379> get key5
"10"

DECRBY

数值依照设定数值进行递减.

127.0.0.1:6379> get key5
"10"

# 指定递减数为3并依此对key的value值进行递减3
127.0.0.1:6379> decrby key5 3
(integer) 7

127.0.0.1:6379> get key5
"7" 

STRLEN

指定key的value字串长度.

127.0.0.1:6379> get key1
"jacky"

127.0.0.1:6379> strlen key1
(integer) 5

APPEND

指定key的value字串插入字串.

127.0.0.1:6379> get key1
"jacky"

127.0.0.1:6379> append key1 www
(integer) 8

127.0.0.1:6379> get key1
"jackywww"

GETRANGE

指定key取得value中的起始与结束字元.

127.0.0.1:6379> get key1
"jackywww"

127.0.0.1:6379> getrange key1 0 3
"jack"

SETRANGE

指定key取代从指定位置取代value字元.

127.0.0.1:6379> get key1
"jackywww"

127.0.0.1:6379> setrange key1 5 ggg
(integer) 8

127.0.0.1:6379> get key1
"jackyggg"

SETNX

当指定的key不存在时才写入key与value.

127.0.0.1:6379> set key1 jacky
OK

127.0.0.1:6379> get key1
"jacky"

127.0.0.1:6379> set key1 jacky2
OK

127.0.0.1:6379> get key1
"jacky2"

# 当key1不存在才写入jacky3到key1的value
127.0.0.1:6379> setnx key1 jacky3
(integer) 0

127.0.0.1:6379> get key1
"jacky2"

127.0.0.1:6379> get key3
(nil)

# 当指定的key存在时才写入key与value.
127.0.0.1:6379> set key3 abc xx
(nil)

SETEX

设定key过期时间并写入value,key到期Redis背景会自动删除.(秒)

127.0.0.1:6379> setex key3 5 www
OK

127.0.0.1:6379> get key3
"www"

127.0.0.1:6379> ttl key3
(integer) 1

127.0.0.1:6379> get key3
(nil)

PSETEX

设定key过期时间并写入value,key到期Redis背景会自动删除.(毫秒)

127.0.0.1:6379> get key3
(nil)

127.0.0.1:6379> psetex key3 50000 www
OK

127.0.0.1:6379> get key3
"www"

127.0.0.1:6379> pttl key3
(integer) 43641

127.0.0.1:6379> get key3
(nil)

GETSET

取得目前指定key的值,并写入新的值.

127.0.0.1:6379> get key4
(nil)

127.0.0.1:6379> getset key4 ccc
(nil)

127.0.0.1:6379> get key4
"ccc"

INCRBYFLOAT

数值依照设定浮点数值进行递增.

127.0.0.1:6379> get key5
(nil)

127.0.0.1:6379> set key5 123.456
OK

127.0.0.1:6379> incrbyfloat key5 0.001
"123.457"

127.0.0.1:6379> get key5
"123.457"

MSETNX

一次设定多笔的key不存在时才写入key与value.

127.0.0.1:6379> mget key1 key2
1) (nil)
2) (nil)

127.0.0.1:6379> msetnx key1 jacky key2 123
(integer) 1

127.0.0.1:6379> mget key1 key2
1) "jacky"
2) "123"

127.0.0.1:6379> msetnx key1 boy key2 456
(integer) 0

Redis 进阶操作

EXISTS

确认指定key是否存在.

# 存在此key
127.0.0.1:6379> exists key1
(integer) 1

# 存在此2个key
127.0.0.1:6379> exists key1 key2
(integer) 2

# 只存在此2个key,key3不存在
127.0.0.1:6379> exists key1 key2 key3
(integer) 2

EXPIRE

设定key过期时间,key到期Redis背景会自动删除.(秒)

127.0.0.1:6379> expire key1 3
(integer) 1

# 已删除
127.0.0.1:6379> get key1
(nil)

# 设定key1值并设定到期时间为2秒 
127.0.0.1:6379> set key1 jacky ex 10
OK

# 剩余7秒到期
127.0.0.1:6379> ttl key1
(integer) 7

# 到期已删除
127.0.0.1:6379> get key1
(nil)

PEXPIRE

设定key过期时间,key到期Redis背景会自动删除.(毫秒)

127.0.0.1:6379> pexpire key2 100
(integer) 1

# 已删除
127.0.0.1:6379> get key2
(nil)

# 设定key1值并设定到期时间为1000毫秒
127.0.0.1:6379> set key1 jacky px 20000
OK

# 剩余8666毫秒到期 
127.0.0.1:6379> pttl key1
(integer) 8666

# 到期已删除
127.0.0.1:6379> get key1
(nil)

DEL

删除指定key与value,如果大量删除有可能会让Redis主thread占用进而影响操作.

# 删除5个key成功
127.0.0.1:6379> del key1 key2 key3 key4 key5
(integer) 5

# 没有删除任何一个key
127.0.0.1:6379> del key1 key2 key3 key4 key5
(integer) 0

UNLINK

将指定key由keyspace的资料中删除,但实际资料会由背景执行Process进行删除,所以大量资料删除时不会影响Redis主thread操作.

127.0.0.1:6379> unlink name1 name2 name3
(integer) 3

<<:  [Part 4 ] Vue.js 的精随-元件 Slots

>>:  Day12 ATT&CK for ICS - Initial Access(2)

LeetCode解题 Day28

922. Sort Array By Parity II https://leetcode.com/...

RNN

今天来介绍NN的另一个类别,RNN主要是运用在sequence data做预测,也就是任何有序的资料...

卡夫卡的藏书阁【Book23】- Kafka - KafkaJS 监控状态事件

“I miss you deeply, unfathomably, senselessly, te...

【Day 27】 为何要进行服务器效能监控

哈罗大家晚安~ 外面的风超级大的 希望大家都平平安安 接下来就是实作三 - 服务器效能监控 on A...

Day 23. Hashicorp Vault: KeePass into Vault

Hashicorp Vault: KeePass into Vault 今天介绍一个小工具,当你要把...