0%

redis基本类型之string

​ redis、docker都已经安装成功(没看的朋友可以点击redis在docker中的使用),那么接下来肯定就到里redis的数据类型了,这里先说一说string类型。

​ string字符串是作为Redis最基本的类型,一个key对应一个value,并且string类型是二进制安全的,那么意味着Redis的string可以包含任何数据,比如jpg图片或者序列化的对象,而一个Redis中字符串value的大小最多可以是512M,下列是string的一些常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
get <key>:查询对应的键值
set <key> <value>:添加键值对(原本有值的话会覆盖)
append < key> <value>:将给定的<value>追加到原值的末尾
strlen <key>:获取键值的长度
setnx <key> <value>:只有在key不存在时设置key的值
incr <key>:将key中存储的数字值增1,只能对数字值操作,如果为空,新增值为1
decr <key>::将key中存储的数字值减1,只能对数字值操作,如果为空,新增值为-1
incrby/decrbu <key> <步长>:将key中存储的数字值增减,自定义步长
incr key:对存储再指定key的数值执行原子的加1操作
mset: <key1> <value1> <key2> <value2>...:同时设置一个或多个key-value对
mget: <key1> <key2> <key3>...:同时获取多个value
msetnx:<key1> <value1> <key2> <value2>...:同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
getrange:<key> <起始位置><结束位置>:获取值的范围,类似java中的substring
setrange <key> <起始位置><value>:用<value>覆盖<key>锁存贮的字符串值,从<起始位置>开始
setex <key> <过期时间>:设置键值的同时hi,设置过期时间,单位秒
getset <key> <value>:以新换旧,设置了新值同时获得旧值

​ 这是一些很常用的命令,由于PigGo上传图片太麻烦,就没有一一上传,只是记载了方法和解释,每个命令都是我写过的,在redis没有问题的情况下,是完全没问题的,可以使用keys * 来查看,或者用宿主机器上的RedisDesktopManager来连接查看。

经典问题:redis是原子性操作吗?

首先原子性的概念:所谓的原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何contextswitch(切换到另一个线程)

1.在单线程中,能够在单条指令中完成的操作都可以认为时原子操作,因为中断只能发生于指令之间
2.在多线程中,不能被其它进程(线程)打断的操作就原子操作
Redis单命令时原子性主要得益于Redis的单线程
java中的i++是否为原子性?
答:不是,一共分为三步。取得i值,加1,再放进去,

注:存在环境问题的请点击redis在docker中的使用

----------本文结束感谢您的阅读----------