SET key value / GET key
SET k1 v1
GET k1 // v1
String是二进制安全的,是可变长度的, 底层类似于ArrayList 是可扩容的,最大存储内存为 512MB。
EXISTS key
SET k1 v1
EXISTS k1 // 1
1 表示存在,0表示不存在
SET k1 v1
DEL k1 //1
删除成功返回1,反之0
UNLINK key
SET k1 v1
UNLINK k1 // 1
删除成功返回1,反之0
TTL key
SET k1 v1
TTL k1 // -1
-1 代表永不过期,-2代表已经过期,其他数字代表正在倒计时。默认都是永不过期。
EXPIRE key timeNumber
SET k1 v1
EXPIRE k1 40 // 单位是秒
TTL k1 // 40
TTL k1 // 39
TTL k1 // 38
.....
TTL k1 // -2
KEYS *
SET k1 v1;
SET k2 v2;
KEYS * // 1) "k2"
// 2) "k1"
Redis 出厂自带16个db库,对应下标是 0 - 15
SELECT 1 // 移动到索引为1的数据库
SET k1 v1
MOVE k1 2 // 将k1移动到索引为2的数据库中
SET k1 v1
DBSIZE // 1
FLUSHDB
FLUSHALL
HELP@[数据类型]
SET k1 v1 NX
GET k1 // v1
SET k1 v1 NX // 已经存在
// 输出(nil)
SET k2 v2 XX // 此时db里是没有存在k2的
// (nil)
SET k2 v2
SET k2 v2 XX // 可以成功创建,value的值进行覆盖
SET k1 v1;
SET k1 v2 GET; // v1
GET k1; // v2
还可以直接使用GETSET来进行更该且返回值
SET k1 v1;
GETSET k1 v2; // v1
GET k1; // v2
这个很简单。在后面跟随即可
SET k1 v1 EX 10; // 十秒后过期
SET k1 v1 PX 10000; // 一万毫秒后过期
在Java中获取UNIX时间戳。
SET k1 v1 EXAT xxxxx;
PXAT 是毫秒。把 /1000去掉即是毫秒。用法不变。
SET k1 v1 EX 30; // 三十秒后过期
SET k1 v2; // 一旦这样做,重新赋值,则ttl = -1; 永不过期
TTL k1; // -1
// 所以应该在修改value的时候,后面加上KEEPLTTL保留生存时间
SET k2 v2 EX 30;
SET k2 v3 KEEPTTL;
批量添加和批量获取键值对,很简单。
// 批量添加
MSET k1 v1 k2 v2 k3 v3 k4 v4;
// 批量获取
MGET k1 k2 k3 k4;
// MSETNX 就是不存在的时候在进行创建
MSETNX k5 v5 k6 v6 k7 v7;
但是需要注意的是 MSETNX是整体性的,具有原子性的。如果存在k1,不存在k4,那么整体来说都是存在的,则都不会创建。要么全部不存在,进行创建,要么不创建。
GETRANGE key statrIndex stopIndex
很容易理解
SET k1 abcdefg1234567;
GETRANGE k1 0 -1; // abcdefg1234567
如果后面跟的参数是 0 到 -1 则表示获取全部的内容,下标从0开始,到全部数量 - 1 结束。
SET k1 abcdefg1234567;
GETRANGE k1 0 - 3; // abcd
SETRANGE key index value;
SET k1 aaaaaaaaaa;
SETRANGE k1 2 bbbb;
GET k1; // aabbbbaaaa