- 以key-value来进行存储的
使用场景
- 页面数据缓存
- 数字计算与统计
- session共享
使用方法
通过redis-cli
- 添加键值
127.0.0.1:6379> set k1 val1
- 获取键值
127.0.0.1:6379> get k1
"val1"
- 给元素追加
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> append k1 append
(integer) 5
127.0.0.1:6379> get k1
"v1append"
- 查询字符串长度
127.0.0.1:6379> get name
"lc666"
127.0.0.1:6379> strlen name
(integer) 5
127.0.0.1:6379>
- 多键值对添加
127.0.0.1:6379> mset age 12 sex male
OK
- 多键值查询
127.0.0.1:6379> mget age sex
1) "12"
2) "male"
- 赋值字符串,并设置过期时间(单位/秒)
127.0.0.1:6379> setex name 5 lc
OK
127.0.0.1:6379> get name
"lc"
127.0.0.1:6379> get name
(nil)
- 赋值字符串,并设置过期时间(单位/毫秒)
127.0.0.1:6379> psetex name 5000 lc
OK
127.0.0.1:6379> get name
"lc"
127.0.0.1:6379> get name
"lc"
127.0.0.1:6379> get name
(nil)
- 截取字符串
127.0.0.1:6379> get word
"hello world"
127.0.0.1:6379> getrange word 0 3
"hell"
- 设置字符串新值返回旧值
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mysql
"redis"
127.0.0.1:6379> get db
"mysql"
- 赋值(创建)键值对当
key
不存在时,如果存在不会修改
127.0.0.1:6379> get name
"lc"
127.0.0.1:6379> setnx name look
(integer) 0
127.0.0.1:6379> get name
"lc"
- 设置一个或多个键值,当所有键值都不存在时,msetnx为原子操作,一个不成功都不成功
127.0.0.1:6379> msetnx k5 v5 k6 v6
(integer) 1
127.0.0.1:6379> mget k5 k6
1) "v5"
2) "v6"
- 截取字符串并赋值,截取的字符串不存在会按照空字符串处理
127.0.0.1:6379> get word
"hello world"
127.0.0.1:6379> setrange word 6 redis
(integer) 11
127.0.0.1:6379> get word
"hello redis"
通过代码
public class RedisTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost", 6379);
jedis.set("name", "lc");
String name = jedis.get("name");
System.out.println(name);
}
}
import redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('name', 'lc')
print(r.get('name'))
查看数据类型
-
我们可以使用
object encoding key
命令来查看对象(键值对)存储的数据类型,当我们使用此命令来查询-
int
:整型 -
embstr
:字符串 -
raw
:字符串超过44 字节时
-
-
在
Redis
中,如果SDS
的存储值大于 64 字节时,Redis
的内存分配器会认为此对象为大字符串,并使用raw
类型来存储,当数据小于 64 字节时(字符串类型),会使用embstr
类型存储。既然内存分配器的判断标准是 64 字节, -
这是因为
Redis
在存储对象时,会创建此对象的关联信息,redisObject
对象头和SDS
自身属性信息,这些信息都会占用一定的存储空间,因此长度判断标准就从 64 字节变成了 44 字节。
网友评论