一、简介
Redis最常用的数据类型有5种,分别是:字符串类型、列表类型、哈希表类型、集合类型、有序集合类型。其中,最常用的是字符串类型。
字符串类型的全称是Simple Dynamic Strings,简称SDS,它是以键值对key-value的形式进行存储的,根据key来存储和获取value值,在实际项目中应用非常广泛。
二、字符串类型应用场景
1、页面数据缓存
当数据量和并发量达到一定级别后,数据库就会拖慢系统运行,为了避免这种情况发生,我们可以把查询结果放入缓存(Redis)中,让下次同样的查询直接去缓存取结果,而非查询数据库,这样既减少数据库的压力,同时也提高程序的运行速度。
2、数字计算与统计
Redis可以用来存储整数和浮点类型的数据,并且可以通过命令直接累加并存储整数信息,这样就省去了每次要先取数据、转换数据、拼加数据、再存入数据的麻烦,只需要一个命令就可以完成此流程。因此可以使用此功能来实现访问量的统计,当有人访问时访问量 +1 即可。
3、共享Session信息
使用Session保存用户的会话(登录)状态时,这些Session信息会被保存在服务器端,但这只适用于单系统应用,如果是分布式系统,分布式系统每次会把请求随机分配到不同的服务器,假设用户的Session信息被存储在服务器A,第二次访问时用户被分配到服务器B,但服务器B并没有用户的Session信息,就会出现需要重复登录的问题。
因此分布式系统,可以借助Redis将Session信息统一存储管理,这样无论请求发送到哪台服务器,服务器都可以去缓存系统获取用户的Session信息,解决了分布式系统下Session存储的问题。
三、字符串常用命令操作
1、添加键值对
语法:
添加单一键值对:set key value
添加单一或多个键值对:mset key1 value1 key2 value2...
127.0.0.1:6379> set cacheStr redis
OK
127.0.0.1:6379> set key1 redis key2 memcache
OK
2、获取键值对
语法:
获取单一键值对:get key
获取单一或多个键值对:mget key1 key2 key3...
127.0.0.1:6379> get cacheStr
"redis"
127.0.0.1:6379> mget key1 key2
1) "redis"
2) "memcache"
3、给键值设置过期时间
语法:
a. set key value [expiration EX seconds|PX milliseconds]
其中:EX表示过期时间单位为秒,PX则为毫秒
127.0.0.1:6379> get cacheStr ex 1000
OK
b. setex key seconds value
此命令设置的过期时间单位为秒
127.0.0.1:6379> setex cacheStr 1000
OK
c. psetex key milliseconds value
此命令设置的过期时间单位为毫秒
127.0.0.1:6379> psetex cacheStr 1000
OK
d. ttl key
此命令用于查询键的过期时间
127.0.0.1:6379> ttl cacheStr
(integer) 995
4、给元素追加值
语法:append key value
如果key已经存在并且是一个字符串,append命令将指定的value追加到该key原来值的末尾。
127.0.0.1:6379> append cacheStr memcache
(integer) 7
127.0.0.1:6379> get cacheStr
"redismemcache"
5、查询字符串的长度
语法:strlen key
127.0.0.1:6379> strlen cacheStr
(integer)12
6、数字统计
a. 给整数类型的值加、减1
语法:
加:incr key
减:decr key
b. 给key加、减指定的值
语法:
加:incrby key value
减:decrby key value
如果key不存在,会先初始化此key为0,再进行整数值的加、减。
四、字符串的内部数据类型
Redis的字符串对象包含了三种不同的数据类型:int、embstr 和 raw。
使用object encoding key命令可以查看对象(键值对)存储的数据类型。
1、int
整数类型对应int类型:
127.0.0.1:6379> set key 666
OK
127.0.0.1:6379> object encoding key
"int"
2、embstr
字符串对应embstr类型:
127.0.0.1:6379> set key abc
OK
127.0.0.1:6379> object encoding key
"embstr"
3、raw
当字符串长度大于44字节时,会变为raw类型存储:
127.0.0.1:6379> set key abcdefghigklmnopqrstyvwxyzabcdefghigklmnopqrs
OK
127.0.0.1:6379> object encoding key
"raw"