0 环境
- 系统环境: centos7
- 编辑器: xshell
1 前言
在redis中 key--> 字符串 不同的key对应的值不同 则具备不同的数据结构 5种数据结构(主指值的数据类型不同)
2 string(字符串)
字符串键是redis最基本的键值对类型(key-value形式 键值可以文字 图片。。)
- set(为字符串键设置值)
set给一个key赋值 实际情况 新加入的键可能会出现在数据库的任何位置上(无序)
复杂度: O(1)
覆盖规则 相同的key赋值 后来的覆盖前来的
不过现在提供nx选项 只有key对应的value没有值的执行设置
// 伪代码 只为容易理解 别钻牛角尖
if(set.get(key)== null){
set.get(key) = value;
}
setnx --> 输出的结果 成功1 失败0
set key value [nx|xx] nx --> 成功 ok 失败 nil xx正好与之相反
- get(获取字符串键的值)
时间复杂度:O(1)
- getset(获取旧值并设置新值)
复杂度:o(1)
getset类似:
string.get(key);
string.set(key, value);
- mset(一次为多个字符串键设置值)
时间复杂度o(n) 命令
mset key value [key value...]
- mget(一次性获取多个字符串键的值)
时间复杂度o(n) 命令
mget key[key ...]
- msetnx(只在键不存在的时候 一次为多个字符串键设置值)
时间复杂度o(n) 命令
msetnx key value [key value...]
// 只是为了方便理解
list a = new arraylist();
string.foreach(key:keys){
if(string.get(key)!= null){
return;
}
a.add(string.get(key));
}
- STRLEN(获取字符串值的字节长度)
复杂度:o(1)
- 字符串索引
正数索引从0(头)开始
负数索引从最末尾-1开始 从后往前递减 从前往后递增计算方式(-xxx.size。。。-1)
- GETRANGE(获取字符串值索引范围的内容)
时间复杂度o(n)
命令
GETRANGE key start end
类似数组的切片list[start:end]