Redis有6大基本类型,分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)
redis在线体验地址:http://try.redis.io/
字符串(String)
介绍:
字符串是Redis中最基本的数据类型,数据以二进制的形式存储于内存中,所以Redis的字符串可以是任何形式的数据,比如JPEG图像、序列化的Ruby对象等。
字符串最大可存储512MB的数据,但一般一个字符串容量过大,会直接影响存储和查询的效率。字符串有两种编码方式:raw和embstr,根据字符串长度自动选择使用哪一种编码,目前最新版的长度是44个字节,字符串长度小于等于44个字节,则使用embstr编码,大于44个字节则使用raw编码,两种编码方式这里就不作详解,有兴趣的可以谷歌一下。
创建缓存
-
创建一个缓存
-
命令格式:
set key value
-
🌰
1
2
3
4set cc 'niubility'
创建一个key为cc,值为niubility的缓存
-
-
批量创建缓存
-
命令格式:
mset key value [key value ...]
-
🌰
1
2
3
4mset cc1 1 cc2 2 cc3 3
创建三个缓存,key:value分别为cc1:1, cc2:2, cc3:3 -
命令格式:
msetnx key value [key value ...]
🌰
1
2
3
4
5msetnx cc1 11 cc2 22 cc5 5 cc6 6
此命令只会将尚不存在的key值创建到缓存中,已经存在的key则忽略
* cc1、cc2已存在于缓存中,所以不会创建/更新成功,cc5、cc6不存在于缓存中,会创建
-
-
创建一个带过期时间的缓存
-
命令格式:
setex key time value
-
🌰
1
2
3
4setex cc1 10 234
设置key:value为cc1:234且过期时间为10秒的缓存
-
-
设置一个不存在key的value,若key已存在则不设置
-
命令格式:
setnx key value
-
🌰
1
2
3
4setnx cc5 12
若cc5的key不存在于缓存中,则创建key:value为cc5:12的缓存,否则不执行创建
-
-
组合创建一个缓存(缓存过期时间、是否覆盖)
-
命令格式:
set key value [EX|PX time] [NX|XX]
解析:
1
2
3
4
5
6
7EX:表明过期时间为秒
PX:表明过期时间为毫秒
NX:若key不存在则执行,否则不执行,与XX相反
XX:若key存在则执行,否则不执行,与NX相反 -
🌰
1
2
3
4set cc1 123 EX 20 XX
若cc1已存在则创建过期时间为20秒的key:value = cc1:123
-
-
将key设置为新值的同时返回原值
-
命令格式:
getset key value
-
🌰
1
2
3
4getset cc1 1
若key不存在,则返回nil
-
读取缓存
-
读取一个key的缓存值
-
命令格式:
get key
-
🌰
1
2
3
4get cc1
读取key=cc1的值
-
-
批量读取一批数据
-
命令格式:
mget key [key ...]
-
🌰
1
mget cc1 cc2 cc3
-
-
截取字符串并返回
-
命令格式:
getrange key start end
-
🌰
1
2
3
4getrange cc1 1 12
字符串下标以0开始,若start超出字符串长度或key不存在,则返回空字符串
-
其他操作
-
将value加1( value必须为整数 )[ 可用于阅读量、点赞数等简单统计类的功能应用 ]
-
命令格式:
incr key
-
🌰
1
2
3
4incr cc1
每次调用均对value进行+1操作
-
-
给value加上某个数( num必须为整数 )
-
命令格式:
incrby key num
-
🌰
1
2
3
4incrby cc1 100
给cc1的值加上100
-
-
给value加上某个浮点数
-
命令格式:
incrbyfloat key num
-
🌰
1
incrbyfloat cc1 0.2
-
-
给value减1
-
命令格式:
decr key
-
🌰
1
2
3
4decr cc1
每次调用均对value进行-1操作
-
-
给value减去某个数( num必须为整数 )
-
命令格式:
descby key num
-
🌰
1
2
3
4decrby cc1 100
给cc1的值减去100
-
-
查看value的长度
-
命令格式:
strlen key
-
🌰
1
strlen cc1
-
目前先整理这些,都是一些基础的命令,随后再写一篇Java中使用Jedis操作字符串的随笔。