Redis
2022/4/29 2:13:12
本文主要是介绍Redis,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
-
Redis的五种数据结构:
- 字符串:zhangsan 20 true string 单key:单value: username:zhangsan age:20
- list列表: 13900009999 zs@163.com 321321 list 单key:多有序value: contacts:13900009999,xxx,xxxx
- set集合: beijing shanghai chongqing tianjin set 单key:多无序value:city:bj sh cq tj
- pojo: id:1001,name:zhangsan,age:20 hash 单key: 对象(属性:值):student:id:1001,name:zhangsan,age:20
- zset 单key:多有序vlaue: city:1000 tj,1200 cq,1500 sh,2000 bj
-
redis中有关key的操作命令:
- 查看数据库中的key:keys pattern
- |->*:匹配0个或者多个字符
- |->?: 匹配1个字符
- |->[]:匹配[]里边的1个字符
- keys *:查看数据库中所有的key
- keys k*:查看数据库中所有以k开头的key
- keys h*o:查看数据库中所有以h开头、以o结尾的key
- keys h?o: 查看数据库中所有以h开头、以o结尾的、并且中间只有一个字符的key
- keys h[abc]llo:查看数据库中所有以h开头以llo结尾,并且h后边只能取abc中的一个字符的key
- 判断key在数据库中是否存在:exists key 如果存在,则返回1;如果不存在,则返回0
- exists key [key key ....] 返回值是存在的key的数量
- 例:exists k1
- 例:exists k1 k2 k3 hello
- 移动指定key到指定的数据库实例:move key index
- 例:move k 1
- 查看指定key的剩余生存时间:ttl key
- |->如果key没有设置生存时间,返回-1
- |->如果key不存在,返回-2
- 例:ttl k1
- 例:ttl k2
- 设置key的最大生存时间:expire key seconds
- 例:expire k2 20
- 查看指定key的数据类型:type key
- 例:type k1
- 重命名key: rename key newkey
- 例:rename hello k2
- 删除指定的key:del key [key key .....]
- |->返回值是实际删除的key的数量
- 例:del k1 k2 k3 k4
- 查看数据库中的key:keys pattern
- redis中有关string类型数据的操作命令:
- 将string类型的数据设置到redis中:set 键 值
- 例:set zsname zhangsan
- 例:set zsage 20
- 例:set totalRows 100
- 例:set zsage 30 如果key已经存在,则后来的value会把以前的value覆盖掉.
- 从redis中获取string类型的数据:get 键
- 例:get zsname
- 例:get zsage
- 例:get totalRows
- 追加字符串:append key value
- |->返回追加之后的字符串长度
- |->如果key不存在,则新创建一个key,并且把value值设置为value。
- 例:set phone 1389999
- 例:append phone 8888
- 获取字符串数据的长度:strlen key
- 例:strlen phone
- 将字符串数值进行加1运算:incr key
- |->返回加1运算之后的数据
- |->如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算。
- |->要求key所表示value必须是数值,否则,报错
- 例:incr zsage
- 例:incr age
- 例:incr zsname 报错
- 将字符串数值进行减1运算:decr key
- |->返回减1运算之后的数据
- |->如果key不存在,首先设置一个key,值初始化为0,然后进行decr运算。
- |->要求key所表示value必须是数值,否则,报错
- 将字符串数值进行加offset运算:incrby key offset
- |->返回加offset运算之后的数据
- |->如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算。
- |->要求key所表示value必须是数值,否则,报错
- 例:incrby zsage 10
- 将字符串数值进行减offset运算:decrby key offset
- |->返回减offset运算之后的数据
- |->如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算。
- |->要求key所表示value必须是数值,否则,报错
- 例:decrby zsage 10
- 闭区间获取字符串key中从startIndex到endIndex的字符组成的子字符串:getrange key startIndex endIndex
- |->下标自左至右,从0开始,依次往后,最后一个字符的下标是字符串长多-1;
- |->字符串中每一个下标也可以是负数,负下标表示自右至左,从-1开始,依次往前,最右边一个字符的下标是-1
- 例:zhangsan
- 例:getrange zsname 2 5 angs
- 例:getrange zsname 2 -3 angs
- 例:getrange zsname 0 -1 zhangsan
- 用value覆盖从下标为startIndex开始的字符串,能覆盖几个字符就覆盖几个字符:setrange key startIndex value
- 例:setrange zsname 5 xiaosan //zhangxiaosan
- 例:setrange zsname 5 lao //zhanglaoosan
- 设置字符串数据的同时,设置它最大生命周期:setex key seconds value
- 例:setex k1 20 v1
- 设置string类型的数据value到redis数据库中,当key不存在时设置成功,否则,则放弃设置:setnx key value
- 例:setnx zsage 20
- 批量将string类型的数据设置到redis中:mset 键1 值1 键2 值2 .....
- 例:mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5
- 批量从redis中获取string类型的数据:mget 键1 键2 键3.....
- 例:mget k1 k2 k3 k4 k5 k6 zsname zs age totalRows
- 批量设置string类型的数据value到redis数据库中,当所有key都不存在时设置成功,否则(只要有一个已经存在),则全部放弃设置:msetnx 键1 值1 键2 值2 .....
- 例:msetnx kk1 vv1 kk2 vv2 kk3 vv3 k1 v1
- 将string类型的数据设置到redis中:set 键 值
-
redis中有关list类型数据的操作命令:单key-多有序value.
- 一个key对应多个value;
- 多个value之间有顺序,最左侧是表头,最右侧是表尾;
- 每一个元素都有下标,表头元素的下标是0,依次往后排序,最后一个元素下标是列表长度-1;
- 每一个元素的下标又可以用负数表示,负下标表示从表尾计算,最后一个元素下标用-1表示;
- 元素在列表中的顺序或者下标由放入的顺序来决定。
- 通过key和下标来操作数据。
- 将一个或者多个值依次插入到列表的表头(左侧):lpush key value [value value .....]
- 例:lpush list01 1 2 3 结果:3 2 1
- 例:lpush list01 4 5 结果:5 4 3 2 1
- 获取指定列表中指定下标区间的元素:lrange key startIndex endIndex
- 例:lrange list01 1 3 结果:4 3 2
- 例:lrange list01 1 -2 结果: 4 3 2
- 例:lrange list01 0 -1 结果:5 4 3 2 1
- 将一个或者多个值依次插入到列表的表尾(右侧):rpush key value [value value .....]
- 例:rpush list02 a b c 结果:a b c
- 例:rpush list02 d e 结果:a b c d e
- 例:lpush list02 m n 结果: n m a b c d e
- 从指定列表中移除并且返回表头元素:lpop key
- 例:lpop list02
- 从指定列表中移除并且返回表尾元素:rpop key
- 例:rpop list02
- 获取指定列表中指定下标的元素:lindex key index
- 例:lindex list01 2 结果:3
- 获取指定列表的长度:llen key
- 例:llen list01
- 根据count值移除指定列表中跟value相等的数据:lrem key count value
- |->count>0:从列表的左侧移除count个跟value相等的数据;
- |->count<0:从列表的右侧移除count个跟vlaue相等的数据;
- |->count=0:从列表中移除所有跟value相等的数据
- 例:lpush list03 a a b c a d e a b b 结果:b b a e d a c b a a
- 例:lrem list03 2 a 结果:b b e d c b a a
- 例:lrem list03 -1 a 结果:b b e d c b a
- 例:lrem list03 0 a 结果:b b e d c b
- 截取指定列表中指定下标区间的元素组成新的列表,并且赋值给key:ltrim key startIndex endIndex
- 例:lpush list04 1 2 3 4 5 结果:5 4 3 2 1
- 例:ltrim list04 1 3
- 例:lrange list04 0 -1 结果:4 3 2
- 将指定列表中指定下标的元素设置为指定值: lset key index value
- 例:lset list04 1 10
- 将value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlaue
- 例:linsert list04 before 10 50
- 例:linsert list04 after 10 60
- 一个key对应多个value;
-
redis中有关set类型数据的操作命令:单key-多无序value
- 一个key对应多个vlaue;
- value之间没有顺序,并且不能重复;
- 通过业务数据直接操作集合。
- 将一个或者多个元素添加到指定的集合中:sadd key value [value value ....]
- *如果元素已经存在,则会忽略。
- *返回成功加入的元素的个数
- 例:sadd set01 a b c a 结果:a b c
- 例:sadd set01 b d e
- 获取指定集合中所有的元素:smembers key
- 例:smembers set01
- 判断指定元素在指定集合中是否存在:sismember key member
- *存在,返回1
- *不存在,返回0
- 例:sismember set01 f
- 例:sismember set01 a
- 获取指定集合的长度:scard key
- 例:scard set01
- 移除指定集合中一个或者多个元素:srem key member [member .....]
- *不存在的元素会被忽略
- *返回成功成功移除的个数
- 例:srem set01 b d m
- 随机获取指定集合中的一个或者多个元素:srandmember key [count]
- |->count>0:随机获取的多个元素之间不能重复
- |->count<0: 随机获取的多个元素之间可能重复
- 例:sadd set02 1 2 3 4 5 6 7 8
- 例:srandmember set02
- 例:srandmember set02 3
- 例:srandmember set02 -3
- 从指定集合中随机移除一个或者多个元素:spop key [count]
- 例:spop set02
- 将指定集合中的指定元素移动到另一个元素:smove source dest member
- 例:smove set01 set02 a
- 获取第一个集合中有、但是其它集合中都没有的元素组成的新集合:sdiff key key [key key ....]
- 例:sdiff set01 set02 set03
- 获取所有指定集合中都有的元素组成的新集合:sinter key key [key key ....]
- 例:sinter set01 set02 set03
- 获取所有指定集合中所有元素组成的大集合:sunion key key [key key .....]
- 例:sunion set01 set02 set03
- 一个key对应多个vlaue;
-
redis中有关hash类型数据的操作命令:单key:field-value
- field-value
- studentzs:id-1001
- name-zhangsan
- age-20
- 将一个或者多个field-vlaue对设置到哈希表中:hset key filed1 value1 [field2 value2 ....]
- *如果key field已经存在,把value会把以前的值覆盖掉
- 例:hset stu1001 id 1001
- 例:hset stu1001 name zhangsan age 20
- 获取指定哈希表中指定field的值:hget key field
- 例:hget stu1001 id
- 例:hget stu1001 name
- 批量将多个field-value对设置到哈希表中: hmset key filed1 value1 [field2 value2 ....]
- 例:hmset stu1002 id 1002 name lisi age 20
- 批量获取指定哈希表中的field的值:hmget key field1 [field2 field3 ....]
- 例:hmget stu1001 id name age
- 获取指定哈希表中所有的field和value:hgetall key
- 例:hgetall stu1002
- 从指定哈希表中删除一个或者多个field:hdel key field1 [field2 field3 ....]
- 例:hdel stu1002 name age
- 获取指定哈希表中所有的filed个数:hlen key
- 例:hlen stu1001
- 例:hlen stu1002
- 判断指定哈希表中是否存在某一个field:hexists key field
- 例:hexists stu1001 name
- 例:hexists stu1002 name
- 判断指定哈希表中是否存在某一个field:hexists key field
- 例:hkeys stu1001
- 例:hkeys stu1002
- 获取指定哈希表中所有的value列表:hvals key
- 例:hvals stu1001
- 例:hvals stu1002
- 对指定哈希表中指定field值进行整数加法运算:hincrby key field int
- 例:hincrby stu1001 age 5
- 对指定哈希表中指定field值进行浮点数加法运算:hincrbyfloat key field float
- 例:hset stu1001 score 80.5
- 例:hincrbyfloat stu1001 score 5.5
- 将一个field-vlaue对设置到哈希表中,当key-field已经存在时,则放弃设置;否则,设置file-value:hsetnx key field value
- 例:hsetnx stu1001 age 30
- field-value
-
redis中有关zset类型数据的操作命令:有序集合
- 本质上是集合,所有元素不能重复;
- 每一个元素都关联一个分数,redis会根据分数对元素进行自动排序分数可以重复;
- 既然有序集合中每一个元素都有顺序,那么也都有下标;
- 有序集合中元素的排序规则又列表中元素的排序规则不一样。
- )将一个或者多个member及其score值加入有序集合:zadd key score member [score member ....]
- *如果元素已经存在,则把分数覆盖
- 例:zadd zset01 20 z1 30 z2 50 z3 40 z4
- 例:zadd zset01 60 z2
- 获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscores]
- 例:zrange zset01 0 -1 withscores
- 获取指定有序集合中指定分数区间(闭区间)的元素:zrangebyscore key min max [withscores]
- 例:zrangebyscore zset01 30 50 withscores
- 删除指定有序集合中一个或者多个元素:zrem key member [member......]
- 例:zrem zset01 z3 z4
- 获取指定有序集合中所有元素的个数:zcard key
- 例:zcard zset01
- 获取指定有序集合中分数在指定区间内的元素的个数:zcount key min max
- 例:zcount zset01 20 50
- 获取指定有序集合中指定元素的排名(排名从0开始): zrank key member
- 例:zrank zset01 z4 ===>2
- 获取指定有序集合中指定元素的分数:zscore key member
- 例:zscore zset01 z4
- 获取指定有序集合中指定元素的排名(按照分数从大到小的排名):zrevrank key member
- 例:zrevrank zset01 z4 ===>1
- 本质上是集合,所有元素不能重复;
这篇关于Redis的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识