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
“5”
127.0.0.1> LPOP list2
“1”
127.0.0.1> RPOP list1
“1”
127.0.0.1> RPOP list2
#根据下标访问
127.0.0.1> LINDEX list1 2
“3”
127.0.0.1> LINDEX list1 4
“1”
127.0.0.1> LINDEX list2 2
“3”
127.0.0.1> LINDEX list2 4
“5”
#查询字符串长度
127.0.0.1> LLEN list2
“5“
#删除N个M
127.0.0.1> LREM list1 N M