Redis(5)五大数据类型——string(字符串)

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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值