“Redis基础数据结构”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
(建立内容为“=== string(字符串) === ==== 键值对 ==== === list(列表) === === hash(字典) === === set(集合) === === zset(有序集合) ===”的新页面)
 
 
(未显示同一用户的3个中间版本)
第2行: 第2行:
  
 
==== 键值对 ====
 
==== 键值对 ====
 +
<syntaxhighlight lang="powershell">
 +
F:\下载目录\Redis-x64-5.0.14.1>redis-cli
 +
127.0.0.1:6379> set test_key test_value
 +
OK
 +
127.0.0.1:6379> get test_key
 +
"test_value"
 +
</syntaxhighlight>
  
=== list(列表) ===
+
==== 批量键值对 ====
 +
<syntaxhighlight lang="powershell">
 +
127.0.0.1:6379> set test_key1 test_value1
 +
OK
 +
127.0.0.1:6379> set test_key2 test_value2
 +
OK
 +
127.0.0.1:6379> mget test_key test_key1 test_key2
 +
1) "test_value"
 +
2) "test_value1"
 +
3) "test_value2"
 +
</syntaxhighlight>
  
=== hash(字典) ===
+
==== 过期和 set 命令扩展 ====
 +
<syntaxhighlight lang="powershell">
 +
127.0.0.1:6379> set name codehole
 +
OK
 +
127.0.0.1:6379> get name
 +
"codehole"
 +
127.0.0.1:6379> expire name 5    # 5s 后过期
 +
(integer) 1
 +
...          #等候 5s
 +
127.0.0.1:6379> get name
 +
(nil)
 +
</syntaxhighlight>
 +
<syntaxhighlight lang="powershell">
 +
127.0.0.1:6379> setex name 5 codehole    # 5s 后过期,等价于 set + expire
 +
OK
 +
127.0.0.1:6379> get name
 +
"codehole"
 +
...    # 等候 5s
 +
127.0.0.1:6379> get name
 +
(nil)
 +
</syntaxhighlight><syntaxhighlight lang="powershell">
 +
127.0.0.1:6379> setnx name codehole    # 如果 name 不存在就执行 set 创建
 +
(integer) 1
 +
127.0.0.1:6379> get name
 +
"codehole"
 +
127.0.0.1:6379> setnx name holycoder
 +
(integer) 0    #因为 name 已经存在,所以 set 创建不成功
 +
127.0.0.1:6379> get name
 +
"codehole"    # 没有改变
 +
</syntaxhighlight>
  
=== set(集合) ===
+
==== 计数 ====
 +
如果 value 是一个整数,还可以对它进行自增操作。自增是有范围的,它的范围在 signed long 的最大值和最小值之间,超出了这个范围,Redis会报错<syntaxhighlight lang="powershell">
 +
127.0.0.1:6379> set age 30
  
=== zset(有序集合) ===
+
OK
 +
 
 +
127.0.0.1:6379> incr age
 +
 
 +
(integer) 31
 +
 
 +
127.0.0.1:6379> incrby age 5
 +
 
 +
(integer) 36
 +
 
 +
127.0.0.1:6379> incrby age -5
 +
 
 +
(integer) 31
 +
 
 +
127.0.0.1:6379> set codehole 9223372036854775807
 +
 
 +
OK
 +
 
 +
127.0.0.1:6379> incr codehole
 +
 
 +
(error) ERR increment or decrement would overflow
 +
</syntaxhighlight>
 +
 
 +
==== 存储 ====
 +
字符串由多个字节组成,每个字节又由8个 bit 组成,如此便可以将一个字符串看成很多 bit 的组合,这便是 bitmap(位图)数据结构
 +
 
 +
 
 +
 
 +
===list(列表)===
 +
 
 +
===hash(字典)===
 +
 
 +
===set(集合)===
 +
 
 +
===zset(有序集合)===

2022年9月17日 (六) 16:20的最新版本

string(字符串)

键值对

F:\下载目录\Redis-x64-5.0.14.1>redis-cli
127.0.0.1:6379> set test_key test_value
OK
127.0.0.1:6379> get test_key
"test_value"

批量键值对

127.0.0.1:6379> set test_key1 test_value1
OK
127.0.0.1:6379> set test_key2 test_value2
OK
127.0.0.1:6379> mget test_key test_key1 test_key2
1) "test_value"
2) "test_value1"
3) "test_value2"

过期和 set 命令扩展

127.0.0.1:6379> set name codehole
OK
127.0.0.1:6379> get name
"codehole"
127.0.0.1:6379> expire name 5    # 5s 后过期
(integer) 1
...           #等候 5s
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> setex name 5 codehole    # 5s 后过期,等价于 set + expire
OK
127.0.0.1:6379> get name
"codehole"
...    # 等候 5s
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> setnx name codehole    # 如果 name 不存在就执行 set 创建
(integer) 1
127.0.0.1:6379> get name
"codehole"
127.0.0.1:6379> setnx name holycoder
(integer) 0    #因为 name 已经存在,所以 set 创建不成功
127.0.0.1:6379> get name
"codehole"    # 没有改变

计数

如果 value 是一个整数,还可以对它进行自增操作。自增是有范围的,它的范围在 signed long 的最大值和最小值之间,超出了这个范围,Redis会报错

127.0.0.1:6379> set age 30

OK

127.0.0.1:6379> incr age

(integer) 31

127.0.0.1:6379> incrby age 5

(integer) 36

127.0.0.1:6379> incrby age -5

(integer) 31

127.0.0.1:6379> set codehole 9223372036854775807

OK

127.0.0.1:6379> incr codehole

(error) ERR increment or decrement would overflow

存储

字符串由多个字节组成,每个字节又由8个 bit 组成,如此便可以将一个字符串看成很多 bit 的组合,这便是 bitmap(位图)数据结构


list(列表)

hash(字典)

set(集合)

zset(有序集合)