三、Redis数据类型

1. 简介

Redis数据就是以key­-value形式来存储的,key只能是字符串类型,value可以是以下五种类型:String、List、 Set、Sorted­Sets、Hash

2. String类型

        2.1 简介

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

        2.2 操作

  • set/get/append/strlen
$ redis-­cli
127.0.0.1:6379> select 0                  #切换到第1个数据库,默认共有16个数据库,索引从0开始
OK
127.0.0.1:6379> keys *                    #显示所有的键key
(empty list or set)
127.0.0.1:6379> set name tom              #设置键
OK
127.0.0.1:6379> get name                  #获取键对应的值
"tom"
127.0.0.1:6379> exists mykey              #判断该键是否存在,存在返回1,不存在返回
0
(integer) 0
127.0.0.1:6379> append mykey "hello"      #如果该键不存在,则创建,返回当前value的长度
(integer) 5
127.0.0.1:6379> append mykey " world"     #如果该键已经存在,则追加,返回追加后 value的长度
(integer) 11
127.0.0.1:6379> get mykey                 #获取mykey的值
"hello world"
127.0.0.1:6379> strlen mykey              #获取mykey的长度
(integer) 11
#EX和PX表示失效时间,单位为秒和毫秒,两者不能同时使用;NX表示数据库中不存在时才能设置,XX表示存在时才能设置
127.0.0.1:6379> set mykey "this is test" EX 5 NX
OK
127.0.0.1:6379> get mykey
"this is test"

注:命令不区分大小写,但key和value区分

  • incr/decr/incrby/decrby
127.0.0.1:6379> flushdb                   #清空数据库
OK
127.0.0.1:6379> set mykey 20
OK
127.0.0.1:6379> incr mykey                #递增1
(integer) 21
127.0.0.1:6379> decr mykey                #递减1
(integer) 20
127.0.0.1:6379> del mykey                 #删除该键
(integer) 1
127.0.0.1:6379> decr mykey
(integer) ­-1
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> INCR mykey
(integer) 1
127.0.0.1:6379> set mykey 'hello'         #将该键的Value设置为不能转换为整型的普通字符串
OK
127.0.0.1:6379> incr mykey                #在该键上再次执行递增操作时,Redis将报告错误信息
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set mykey 10
OK
127.0.0.1:6379> incrby mykey 5            #递增5,即步长
(integer) 15
127.0.0.1:6379> decrby mykey 10           #递减10
(integer) 5
  • getset/setex/setnx
# getset 获取的同时并设置新的值
127.0.0.1:6379> incr mycount             #将计数器的值原子性的递增1
(integer) 1
127.0.0.1:6379> getset mycount 666       #在获取计数器原有值的同时,并将其设置为新值
"1"
127.0.0.1:6379> get mycount
"666"

# setex 设置过期时间
127.0.0.1:6379> setex mykey 10 "hello"   #设置指定Key的过期时间为10秒,等同于set mykey hello ex 10
OK
127.0.0.1:6379> ttl mykey                #查看指定Key的过期时间(秒数)
(integer) 8

# setnx 当key不存在时才能设置
127.0.0.1:6379> del mykey
(integer) 0
127.0.0.1:6379> setnx mykey "aaa"        #key不存在,可以设置,等同于set mykey aaa nx
(integer) 1
127.0.0.1:6379> setnx mykey "bbb"        #key存在,不能设置
(integer) 0
127.0.0.1:6379> get mykey
"aaa"
  • setrange/getrange 设置/获取指定索引位置的字符
127.0.0.1:6379> set mykey "hello world"
OK
127.0.0.1:6379> get mykey
"hello world"
127.0.0.1:6379> setrange mykey 6 dd    #从索引为6的位置开始替换(索引从0开始)
(integer) 11
127.0.0.1:6379> get mykey
"hello ddrld"
127.0.0.1:6379> setrange mykey 20 dd   #超过的长度使用0代替
(integer) 22
127.0.0.1:6379> get mykey
"hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"
127.0.0.1:6379> getrange mykey 3 12    #获取索引为[3,12]之间的内容
"lo ddrld\x00\x00"
  • setbit/getbit   设置/获取指定位的BIT值,应用场景:考勤打卡
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> setbit mykey 7 1     #设置从0开始计算的第七位BIT值为1,返回原有BIT值0
(integer) 0
127.0.0.1:6379> get mykey            #获取设置的结果,二进制的0000 0001的十六进制值为0x01
"\x01"
127.0.0.1:6379> setbit mykey 6 1     #设置从0开始计算的第六位BIT值为1,返回原有BIT值0
(integer) 0
127.0.0.1:6379> get mykey            #获取设置的结果,二进制的0000 0011的十六进制值为0x03
"\x03"
127.0.0.1:6379> getbit mykey 6       #返回了指定Offset的BIT值
(integer) 1
127.0.0.1:6379> getbit mykey
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值