String字符串
90%的java程序员使用redis只会使用一个String类型!

我们之前学过了最简单的set设置值和get取值
我们现在来学习一些新的命令:

可以给字符串进行追加操作。
我们可以使用strlen去获取字符串的长度。
![]()

如果我们去append追加一个不存在的字符串,那就相当于是和set命令一样。
我们同样可以做一个i++的操作:

我们的incr命令就可以用来自增。
我们在类似像微信里面的那种浏览量啊之类的,就可以用到我们的redis进行一个计数。
当然有了自增我们也可以做自减:
用decr命令进行递减。
我们在java中有个步长的概念,我们这里也可以使用这种一次+多个或者-多个的操作:
我们可以使用incrby和decrby做到按照步长自增或自减。
字符串范围range:
我们先清空一下数据库:
截取字符串操作:
getrange

![]()
范围在0 -1我们可以查看到所有的字符串。
现在我们来做替换字符串操作:
setrange
setex(set with expire) 设置过期时间
setnx(set if not exist) 不存在设置

我们可以给字符串设置存活时间。然后用ttl进行查看还剩多少存活时间。
我们用setnx创建字符串之后。
当我们再去修改值时就修改不了了。
我们这个setnx命令在分布式锁中会常常使用的到。
我们现在来学习 mset和mget命令 一次性批次设置值和获取值
数据库先清一下。

我们这里的msetnx满足原子性,要不就都执行,要不就都不执行,因为已经存在k1不能执行,所以不存在的k4也不会执行。
我们这里也可以设置对象:
set user:1{name:zhangsan,age:3} 值为json字符串来保存一个对象
但是这里我们也可以使用字符串进行操作:

这是一个key的巧妙应用。
我们这里还有组合命令:
getset 先get然后set
如果不存在值则返回新的值。如果存在值,先获取原来的值,再设置新的值。
String类似的使用场景:value除了是我们的字符串还可以是我们的数字。
计数器,统计多单位的数量,粉丝数,对象缓存存储。
List

在redis里面,我们可以把list玩成,栈,队列,阻塞队列!
所有的list命令都是以l开头的。


我们现在去做移除元素。
我们这里的lpop是移除第一个值,rpop是移除最后一个值。
我们可以使用lindex获取元素:
我们可以去获得list的长度:
我们 之前的移除是移除首尾,那现在如果我们想移除指定的值呢?
lrem

我们的list中是可以加入重复元素的。
trim 修剪 list截断!
组合命令:
rpoplpush移除列表的最后一个元素,并且添加一个新的元素:
修改元素的值:
linsert 在一个值的前面或后面插入一个值:
