Redis基本数据类型、以及基本操作命令

231 阅读3分钟

Redis基本数据类型

1. String

Redis构建了一个简单动态字符串(Simple Dynamic String,SDS)的抽象类型,并将SDS作为Redis的默认字符串表示。 SDS定义如下:

typedef struct sdsdr {
    int len;//字符串长度
    int free;//buf数组未使用字节的数量
    char buf[];//字节数组,用于保存字符串
}

2. List

链表节点定义:

typedef struct listNode {
    struct listNode *prev;//前置节点
    struct listNode *next;//后置节点
    void *value;//值
}

Redis基本操作命令

首先在Linux中启动Redis服务。

一、数据库操作

切换数据库

Redis中默认有16个数据库,可在Redis.conf文件中查看字段database 16,每个数据库由ID标识,标识从0开始,默认处于第一个数据库,即下标为0的数据库。

127.0.0.1> select [数据库ID]

删除当前库的所有键值对

127.0.0.1> FLUSHDB

删除所有库的所有键值对

127.0.0.1> FLUSHALL

二、key操作

查看key存活时间ttl(time to live)

127.0.0.1> ttl [keyname]

执行以上命令后,得到的结果为-1,则说明该key永不过期;结果为-2,说明该key已过期,其他结果为key的剩余存活时间。 设置key的过期时间

127.0.0.1> EXPIRE [keyname] [过期时间/s]

查询当前库的所有key

127.0.0.1> keys *

查看指定key对应的value数据类型

127.0.0.1> type [keyname]

三、不同数据类型的操作

String

#添加/更新操作
127.0.0.1> set [keyname] [value]

#删除操作
127.0.0.1> del [keyname]

#查询操作
127.0.0.1> get [keyname]

#追加字符串操作
127.0.0.1> set k1 123
OK
127.0.0.1> append k1 456
OK
127.0.0.1> get k1
"123456"

#查询字符串长度
127.0.0.1> strlen k1
(Integer) 6

#自增操作(该操作只适用于整数)
127.0.0.1> set k2 1
OK
127.0.0.1> INCR k2
(Integer) 2
127.0.0.1> INCR k2
(Integer) 3
127.0.0.1> INCR k2
(Integer) 4

#自减操作(该操作只适用于整数)
127.0.0.1> set k3 5
OK
127.0.0.1> DECR k3
(Integer) 4
127.0.0.1> DECR k3
(Integer) 3
127.0.0.1> DECR k3
(Integer) 2

#加法运算
127.0.0.1> INCRBY k3 3
(Integer) 5

#减法运算
127.0.0.1> DECRBY k3 3
(Integer) 2

#范围查询子串
127.0.0.1> SET K4 ABCD123
127.0.0.1> GETRANGE K4 0 5
"ABCD1"

#范围修改子串
127.0.0.1> SETRANGE K4 0 XXX
"XXXD123"

#添加键值对的同时设置过期时间
127.0.0.1> SETEX K4 10 V4
OK

#添加(如果该key不存在则添加,存在则操作失败) SETNX(SET IF NO EXISTS)
127.0.0.1> SETNX k1 abc
(Integer) 0     # 0代表更新失败
127.0.0.1> SETNX k6 abc
(Integer) 1

#添加/更新多个键值对
127.0.0.1> MSET k10 v10 k11 v11 k12 v12
OK

#查询多个键值对
127.0.0.1> MGET k10 k11 k12
1) "v10"
2) "v11"
3) "v12"

#添加多个键值对(如果不存在)
127.0.0.1> MSETNX k13 v13 k14 v14 k15 v15
OK   # 只要有一个已存在的key,那么此次操作失败

List

#添加操作
127.0.0.1> LPUSH list1 1 2 3 4 5   #先进后出,类似于栈
127.0.0.1> RPUSH list2 1 2 3 4 5   #先进先出,类似于队列

#查询操作
127.0.0.1> LRANGE list1 0 -1 
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1> LRANGE list2 0 -1 
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

#出栈/出队列操作
127.0.0.1> LPOP list1
“5127.0.0.1> LPOP list2
“1127.0.0.1> RPOP list1
“1127.0.0.1> RPOP list2

#根据下标访问
127.0.0.1> LINDEX list1 23127.0.0.1> LINDEX list1 41127.0.0.1> LINDEX list2 23127.0.0.1> LINDEX list2 45#查询字符串长度
127.0.0.1> LLEN list2
“5#删除N个M
127.0.0.1> LREM list1 N M

hash

set

sorted set