1、插入、获取、查看
- 设置(插入)值:
SET KEY(键) VALUE(值)
- 获取值:
GET KEY(键)
- 查看值是否存在:
EXISTS KEY(键)
- 查看所有的键和值:
KEYS *
- 拼接字符串:
APPEND KEY(键) VALUE(值)
- 获取字符段长度:
STRLEN KEY(键)
举例:
127.0.0.1:6379> SET key1 val1 # 设置值
OK
127.0.0.1:6379> get key1 # 获得值
"val1"
127.0.0.1:6379> EXISTS key1 # 判断某一个key是否存在
(integer) 1
127.0.0.1:6379> KEYS * # 获得所有的key
1) "key1"
127.0.0.1:6379> APPEND key1 hello # 追加字符串,如果当前key不存在,就相当于setkey (integer) 7
(integer) 9
127.0.0.1:6379> get key1
"val1hello"
127.0.0.1:6379> STRLEN key1 # 获取字符串的长度!
(integer) 9
127.0.0.1:6379> APPEND key1 world
(integer) 14
127.0.0.1:6379> STRLEN key1
(integer) 14
127.0.0.1:6379> get key1
"val1helloworld"
2.自增 自减
- 自增1:
INCR KEY
- 自减1:
DECR KEY
- 按步长增加:
INCRBY KEY INCREMENT
- 按步长减少:
DECRBY KEY INCREMENT
举例:
127.0.0.1:6379> set num 0 # 设置初始浏览量为0
OK
127.0.0.1:6379> get num
"0"
127.0.0.1:6379> INCR num # 自增1 浏览量加1
(integer) 1
127.0.0.1:6379> INCR num
(integer) 2
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> DECR num # 自减1 浏览量减1
(integer) 1
127.0.0.1:6379> DECR num
(integer) 0
127.0.0.1:6379> DECR num
(integer) -1
127.0.0.1:6379> GET num
"-1"
127.0.0.1:6379> INCRBY num 10 # 设置自增步长,指定增量!
(integer) 9
127.0.0.1:6379> INCRBY num 11
(integer) 20
127.0.0.1:6379> DECRBY num 5 # 设置自减步长,指定减量!
(integer) 15
127.0.0.1:6379> GET num
"15"
3.字符串范围
- 获取指定范围的字符串:
GETRANGE KEY START END
举例 :
127.0.0.1:6379> set mykey "woaini,zhongguo"
OK
127.0.0.1:6379> get mykey
"woaini,zhongguo"
127.0.0.1:6379> getrange mykey 0 5 # 截取字符串0~5
"woaini"
127.0.0.1:6379> getrange mykey 0 -1 # 获取全部字符串
"woaini,zhongguo"
127.0.0.1:6379>
4.替换
- 替换指定位置开始的字符串:
SETRANGE KEY OFFSET VALUE
举例:
127.0.0.1:6379> set xiaokey asdfghjkl
OK
127.0.0.1:6379> get xiaokey
"asdfghjkl"
127.0.0.1:6379> SETRANGE xiaokey 2 hello # 替换指定位置开始的字符串!
(integer) 9
127.0.0.1:6379> get xiaokey
"ashellokl"
5.设置过期时间
设置过期时间: SETEX KEY SECONDS VALUE
是否存在?再创建(如果不存在,再设置 (在分布式锁中会常常使用!) ):SETNX KEY VALUE
举例:
127.0.0.1:6379> keys *
1) "num"
2) "xiaokey"
3) "key1"
4) "mykey"
127.0.0.1:6379> SETEX rrkey 30 "redis,java" # 设置key的值,30秒后过期
OK
127.0.0.1:6379> ttl rrkey
(integer) 20
127.0.0.1:6379> get rrkey
"redis,java"
127.0.0.1:6379> ttl rrkey
(integer) 4
127.0.0.1:6379> ttl rrkey
(integer) -2
127.0.0.1:6379> SETNX bbkey "php,cc" # 如果key不存在,创建key
(integer) 1
127.0.0.1:6379> keys * # rrkey过期了,所以不显示
1) "num"
2) "bbkey"
3) "key1"
4) "xiaokey"
5) "mykey"
127.0.0.1:6379> SETNX bbkey "html,vue" # 如果key存在,创建失败!
(integer) 0
127.0.0.1:6379> get bbkey
"php,cc"
6.同时插入和获取多个值
- 同时设置多个值:
MSET KEY VALUE [KEY VLAUE......]
- 同时获取多个值:
MGET KEY [KEY......]
127.0.0.1:6379> MSET key1 val1 key2 val2 key3 val3 # mset 同时设置多个值
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key3"
3) "key1"
127.0.0.1:6379> MGET key1 key2 key3 # mget 同时获取多个值
1) "val1"
2) "val2"
3) "val3"
127.0.0.1:6379> MSETNX key1 val123 key4 val4 # msetnx 是一个原子性的操作,要么一起成功,要么一起 失败
(integer) 0
127.0.0.1:6379> get key4
(nil)
7.对象
- 设置对象:
SET KEY1:KEY2:KEY3 VALUE
举例:
# 设置一个“user:1”的对象 值是一个json字符来保存对象!
127.0.0.1:6379> set user:1 {name:zhangsan,age:27}
OK
127.0.0.1:6379> keys *
1) "user:1"
2) "key2"
3) "key3"
4) "key1"
127.0.0.1:6379> get user:1
"{name:zhangsan,age:27}"
## 批量设置key(user:{id}:{filed})和值
127.0.0.1:6379> mset user:1:name xiaohua user:1:age 28
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key3"
3) "user:1:name"
4) "key1"
5) "user:1"
6) "user:1:age"
127.0.0.1:6379> mget user:1:name user:1:age
1) "xiaohua"
2) "28"
8.组合命令
- 先取值再赋值:
GETSET KEY VALUE
举例:
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> GETSET db redis # 如果不存在值,则返回 nil
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> GETSET db mysql # 如果存在值,获取原来的值,并设置新的值
"redis"
127.0.0.1:6379> keys *
1) "db"
127.0.0.1:6379> get db
"mysql"