Redis简介
Redis是一个高性能的key-value非关系型数据库,可以存键(key)与5中不同类型的值(value)之间的映射(mapping)。
支持存储的value类型包括:String(字符串)、list(链表)、set(集合)、zset(有序集合)、哈市(散列表)
Spring数据类型
赋值命令
命令原型:SET key value
描述:设定该key持有特定的字符串value,如果该key已经存在,就覆盖它。
返回值:总是返回“OK”。
取值命令
GET key
获取指定key的value,如果该key关联的value不是String类型,就返回报错信息,get命令只能用于获取String value。
返回值:与key相关的value,如果key不存在,返回nil。
GETSET
GETSET key value
原子性的设置该key为指定的value,同时返回该key的原有值。也只能返回String类型,否则报错。
如果不存在,返回nil。
递增数字
INCR key
将指定key的value原子性的递增1。如果key不存在,其初始值为0。如果value的值不能转换为整数型,则返回相应错误信息。该操作取值范围为64位有符号整数。
返回值:递增后的value。
递减数字
DECR key
将指定key的value原子性的递减1。如果key不存在,初始值为0,递减后为-1。其他和递增数字一样。
增加指定的整数
INCRBY key increment
将指定key的值增加increment,其他和增1一样。
减少指定整数
DECRBY key decrement
将指定key的值减少decrement
SETEX key seconds value
原子性完成两个操作,一是设置该key的值为指定字符串,同时设置该key在Redis服务器中的存活时间(秒数)。主要应用于Redis被当做Cache服务器时使用。
SETNX
SETNX key value
如果指定的key不存在,则设定该key持有指定字符串value。如果key已经存在,则该命令不做任何操作。
返回值:1表示设置成功,否则0
向尾部追加值
ADDPEND key value
如果key存在,将参数value追加到已存在value的末尾。如果不存在,会创建一个新的key/value
返回值:追加后value的长度。
获取字符串长度
STRLEN key value
返回指定key的字符值长度,如果value不是String类型,redis将执行失败并返回相关错误信息。
返回值:返回指定key的value字符长度,如果该key不存在,返回0
设置多个键值
MSET key value [key value …]
该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行set命令
返回值:始终返回OK
获取多个键值
MGET key [key …]
返回所有指定keys的values,如果其中一个key不存在,该key的value返回nil。
返回值:返回一组指定keys的values的列表
MSETNX命令
MSETNX key value [key value …]
完成参数中所有key/value的设置操作,可以看做是多次迭代SETNX命令。注意:如果这一批keys中有任意一个key已经存在,那么该操作全部回滚,所有修改将不会生效。
返回值:1表示所有keys都设置成功,0表示没有任何key被修改。
List数据类型
List类型是按照插入排序的字符串链表,可以在其头部和尾部添加元素。插入时若该键不存在,则创建新的链表。若该键中所有元素被移除,那么它也会从数据库中删除。
当我们在链表两端插入或删除元素,会非常高效。若在链表中间操作,将会非常低效。
向列表左端添加元素
LPUSH key value[value …]
在指定key所关联的List value的头部插入参数中给出的所有values。如果该key不存在, 该命令将在插入之前创建一个与key关联的空链表,之后再将数据从链表的头部插入。如果改键value不是链表类型,返回错误信息。
返回值:插入后的链表元素的数量
向列表右边添加元素
RPUSH key value[value…]
和向左端添加元素一样,只是从尾部插入
LPUSHX命令
LPUSHX key value
紧有当前参数指定的key时,才会从头部插入value,否则不会有任何操作
返回值:插入后元素数量。
RPUSHX命令
RPUSHX key value
和LPUSHX相反,有key时从尾部插入value。
从列表左边弹出元素
LPOP key
返回并弹出与之关联的链表的头部第一个元素。若该key不存在,返回nil。
返回值:链表头部的元素
从列表右侧弹出元素
RPOP key
返回并弹出尾部第一个元素。和LPOP方向相反。
获取列表中元素个数
LLEN key
返回与key关联链表元素的数量。如果key不存在,返回0。如果value不是链表,返回错误信息。
返回值:链表中元素的数量
获得列表片段
LRANGE key start stop
Start和stop的值都可以取负值,-1将表示最后一个元素,即尾部元素,-2表示倒数第二个元素以此类推。该命令在获取元素是,start和end位置上的值都会被取出。如果start的值大于链表中元素的数量,空链表将会被取出。如果end的值大于元素的数量,那获取的是从start位置开始,链表中剩余的所有元素
返回值:返回指定范围内元素的列表。
删除列表中指定的值
LREM key count value
在指定key关联的链表中,删除前count个值等于value的元素。
如果count大于0,从头到尾遍历并删除。如果小于0,从尾到头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。如果k也不存在,直接返回0。
返回值:返回被删除的元素数量。
设置指定索引的元素值
LSET key index value
设定链表中指定位置的值为新值。其中0表示第一个元素,即头部元素,-1表示尾部元素。如果index超过元素的数量范围,返回相关错误信息。
获取指定索引的元素值
LINDEX key index
返回链表中指定位置的元素。
Index是0,表示头部元素,是-1,表示尾部元素。若关联的不是链表,返回相关错误信息。
返回值:返回请求的元素,如果index超出范围,则返回nil。