赞
踩
目录
命令使用
1. set : 添加键值对到数据库中。
示例:
set mykey myvalue nx ex 60
2. get : 获取指定键的值。
示例:
get mykey
3. append : 将给定的值追加到原值的末尾。
示例:
append mykey " additional text"
4. strlen : 获取键值的长度。
示例:
strlen mykey
5. setnx : 仅当键不存在时,设置键的值。
示例:
setnx mykey myvalue
6. incr : 将键中储存的数字值加1。只能对数字值操作,如果键不存在,则设置初始值为1。
示例:
incr mycounter
7. decr : 将键中储存的数字值减1。只能对数字值操作,如果键不存在,则设置初始值为-1。
示例:
decr mycounter
8. incrby key num:对数字定义自增数量
只能对数字值操作,如果为空,新增值为-1; incrby/decrby <key><步长>将 key 中储存的数字值增减。自定义步长;
redis是单线程操作,并不会被打乱;
所谓原子操作是指不会被线程调度机制打断的操作;
这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch(切换到另一个线程);
(1)在单线程中能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间;
(2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作;
Redis 单命令的原子性主要得益于 Redis 的单线程;
以下是 Redis 中多个键值操作及范围操作的命令和解释,这些命令都具备原子性(即操作要么全部成功,要么全部失败),确保数据一致性和安全性。
mset key1 value1 key2 value2
mget key1 key2 key3
msetnx key1 value1 key2 value2
substring
,前包后包。
getrange mykey 0 4 # 获取从索引0到4的子字符串
setrange mykey 6 "redis" # 从索引6开始,用"redis"覆盖原值
setex mykey 60 "value" # 设置键mykey的值为"value",并在60秒后过期
getset mykey "newvalue" # 设置mykey的新值为"newvalue",并返回旧值
String 的数据结构为简单动态字符串(Simple Dynamic string,缩写 SDS)。是可以修改的字符串,内部结构实现上类似于 Java的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配;
如图中所示,内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度len。当字符串长度小于 1M时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M的空间。需要注意的是字符串最大长度为 512M。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。