一、Redis的类型
1、字符串(strings)
2、散列(hashes)
3、列表(lists)
4、集合(sets)
5、 有序集合(sorted sets)
二、Redis常用操作
1.String类型
string 是 redis 最基本的类型,一个 key 对应一个 value。
string 类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 redis 最基本的数据类型,string 类型的值最大能存储 512MB。
1.1 set/get/append/strlen
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,不存在返回
(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"
1.2 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
1.3 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"
1.4 setrange/getrange 设置/获取指定索引位置的字符
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 #如果offset已经超出了value的长度,则返回0
(integer) 0
1.5 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