redis数据类型之string,list
redis是干啥的就不多说了,我这里使用windows版的redis,redis是基于内存的,单进程单线程的非关系型数据库,不需要考虑什么线程安全;
想要慢慢的深入redis就要耐下心来从最基本的命令开始慢慢敲一遍,害
1. redis启动脚本
下载完之后目录应该是下图这样的,我们启动一般是redis-server.exe redis.windows.conf启动的,这样可以根据不同配置文件启动的redis服务也是不同的
便于后期的测试,我们写一个启动的脚本,就把上面那一行命令复制到一个txt文件,然后修改文件后缀为.bat,以后只需要双击这个bat文件就能启动redis服务端,然后点击redis-cli.exe就能连接上了;
2.数据类型
redis中有五种数据类型,分别是zset,set,list,hash和string,其实就是和java中那几种集合差不多
下面我们分别看看这几种数据的用法;
2.1 string
字符串是最常用的数据类型了,操作的命令:
set/get:存放/获取键值对
getset: 首先获取key对应的值,并且覆盖原来的值;
mset/mget: 可以一次性保存/获取多个键值对
strlen: 获取键对应的值得长度
append: 给键对应的值附加字符串,返回的是最终字符串的长度
getrange:字符串切割
setex/psetex: 和set命令一样使用,只不过这里可以设置超时时间,时间过了就删除这个键值对,前者单位事秒,后者是毫秒
setnx: 这个命令真的很重要!!!redis实现分布式锁就是基于这个命令的,当redis没有指定的key的时候,就存我们传进去的键值对;有指定key就啥也不干
msetnx: 这是setnx强化版,可以同时设置多个键值对
decr/incr: 自减一和自加一,就是i--和i++
decrby/incrby: 上面的命令每次只能减一/加一,这个命令可以指定减数/加数
2.2 list
很多个人觉得这个list像java中的List<T>,其实我觉得像java中List<List<T>>这种类型才对,而且redis中的list可以从头部插入元素lpush,从尾部插入元素rpush
特点:元素有序,可重复
lpush:创建一个list,并每次从头部(或者说左边)向其中添加多个元素,元素可以重复
lrange: 遍历list中所有元素
rpush: 每次从尾部向list添加元素
lpushx/rpushx: 向list添加元素之前,要保证这个list必须存在,用法和lpush/rpush一样;(这个x是exist的简写)
lpop/rpop: 拿到头部/尾部元素,并删除list中对应的该元素
llen: 获取指定list中元素的数量
lset: 修改列表中指定位置的值
lindex: 获取列表中指定位置的值
lrem: 删除指定数量的重复元素
ltrim:切割一部分的列表为我所用
linsert: 从头到尾匹配到指定元素,在这个元素之前/之后 插入指定元素 ,下面的before是之前,用after是之后