Redis基础知识1)、测试redis服务的性能:redis-benchmark2)、查看redis服务是否正常运行:ping如果正常---pong3)、查看redis服务器的统计信息:info查看redis服务的所有统计信息info [信息段] 查看redis服务器的指定的统计信息 , 如:info Replication4)、redis的数据库实例:作用类似于mysql的数据库实例,redis中的数据库实例只能由redis服务来创建和维护,开发人员不能修改和自行创建数据库实例;默认情况下,redis会自动创建16个数据库实例 , 并且给这些数据库实例进行编号 , 从0开始,一直到15,使用时通过编号来使用数据库;可以通过配置文件 , 指定redis自动创建的数据库个数;redis的每一个数据库实例本身占用的存储空间是很少的,所以也不造成存储空间的太多浪费 。默认情况下,redis客户端连接的是编号是0的数据库实例;可以使用select index切换数据库实例 。5)、查看当前数据库实例中所有key的数量:dbsize6)、查看当前数据库实例中所有的key:keys *7)、清空数据库实例:flushdb8)、清空所有的数据库实例:flushall9)、查看redis中所有的配置信息:config get *查看redis中的指定的配置信息:config get parameter
Redis的五种数据结构程序是用来处理数据的,Redis是用来存储数据的;程序处理完的数据要存储到redis中,不同特点的数据要存储在Redis中不同类型的数据结构中 。字符串:zhangsan20truestring 单key:单value: username:zhangsan age:20list列表: 13900009999 zs@163.com 321321list单key:多有序value: contacts:13900009999,xxx,xxxxset集合:beijing shanghai chongqing tianjinset单key:多无序value:city:bj sh cq tjpojo:id:1001,name:zhangsan,age:20hash单key: 对象(属性:值):student:id:1001,name:zhangsan,age:20zset单key:多有序vlaue:city:1000 tj,1200 cq,1500 sh,2000 bj
Redis中的操作命令【Redis 02: redis基础知识 + 5种数据结构 + 基础操作命令】1)、redis中有关key的操作命令:a)查看数据库中的key:keys pattern|->*:匹配0个或者多个字符|->?: 匹配1个字符|->[]:匹配[]里边的1个字符keys *:查看数据库中所有的keykeys k*:查看数据库中所有以k开头的keykeys h*o:查看数据库中所有以h开头、以o结尾的keykeys h?o: 查看数据库中所有以h开头、以o结尾的、并且中间只有一个字符的keykeys h[abc]llo:查看数据库中所有以h开头以llo结尾,并且h后边只能取abc中的一个字符的keyb)判断key在数据库中是否存在:exists key 如果存在,则返回1;如果不存在,则返回0exists key [key key ....] 返回值是存在的key的数量exists k1exists k1 k2 k3 helloc)移动指定key到指定的数据库实例:move key indexmove k 1d)查看指定key的剩余生存时间:ttl key|->如果key没有设置生存时间 , 返回-1|->如果key不存在,返回-2ttl k1ttl k2e)设置key的最大生存时间:expire key secondsexpire k2 20f)查看指定key的数据类型:type keytype k1g)重命名key: rename key newkeyrename hello k2h)删除指定的key:del key [key key .....]|->返回值是实际删除的key的数量del k1 k2 k3 k42)、redis中有关string类型数据的操作命令:a)将string类型的数据设置到redis中:set 键 值set zsname zhangsanset zsage 20set totalRows 100set zsage 30 如果key已经存在,则后来的value会把以前的value覆盖掉.b)从redis中获取string类型的数据:get 键get zsnameget zsageget totalRowsc)追加字符串:append key value|->返回追加之后的字符串长度|->如果key不存在 , 则新创建一个key,并且把value值设置为value 。set phone 1389999append phone 8888d)获取字符串数据的长度:strlen keystrlen phonee)将字符串数值进行加1运算:incr key|->返回加1运算之后的数据|->如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算 。|->要求key所表示value必须是数值,否则,报错incr zsageincr ageincr zsname报错f)将字符串数值进行减1运算:decr key|->返回减1运算之后的数据|->如果key不存在,首先设置一个key,值初始化为0,然后进行decr运算 。|->要求key所表示value必须是数值,否则,报错g)将字符串数值进行加offset运算:incrby key offset|->返回加offset运算之后的数据|->如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算 。|->要求key所表示value必须是数值,否则,报错incrby zsage 10h)将字符串数值进行减offset运算:decrby key offset|->返回减offset运算之后的数据|->如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算 。|->要求key所表示value必须是数值,否则,报错decrby zsage 10i)闭区间获取字符串key中从startIndex到endIndex的字符组成的子字符串:getrange key startIndex endIndex|->下标自左至右,从0开始,依次往后,最后一个字符的下标是字符串长多-1;|->字符串中每一个下标也可以是负数,负下标表示自右至左 , 从-1开始,依次往前,最右边一个字符的下标是-1zhangsangetrange zsname 2 5angsgetrange zsname 2 -3 angsgetrange zsname 0 -1 zhangsanj)用value覆盖从下标为startIndex开始的字符串,能覆盖几个字符就覆盖几个字符:setrange key startIndex valuesetrange zsname 5 xiaosan//zhangxiaosansetrange zsname 5 lao//zhanglaoosank)设置字符串数据的同时,设置它最大生命周期:setex key seconds valuesetex k1 20 v1l)设置string类型的数据value到redis数据库中,当key不存在时设置成功,否则,则放弃设置:setnx key valuesetnx zsage 20m)批量将string类型的数据设置到redis中:mset 键1 值1 键2 值2 .....mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5n)批量从redis中获取string类型的数据:mget 键1 键2 键3.....mget k1 k2 k3 k4 k5 k6 zsname zs age totalRowso)批量设置string类型的数据value到redis数据库中,当所有key都不存在时设置成功,否则(只要有一个已经存在),则全部放弃设置:msetnx 键1 值1 键2 值2 .....msetnx kk1 vv1 kk2 vv2 kk3 vv3 k1 v13)、redis中有关list类型数据的操作命令:单key-多有序value,一个key对应多个value;多个value之间有顺序 , 最左侧是表头,最右侧是表尾;每一个元素都有下标,表头元素的下标是0,依次往后排序 , 最后一个元素下标是列表长度-1;每一个元素的下标又可以用负数表示,负下标表示从表尾计算,最后一个元素下标用-1表示;元素在列表中的顺序或者下标由放入的顺序来决定 。通过key和下标来操作数据 。a)将一个或者多个值依次插入到列表的表头(左侧):lpush key value [value value .....]lpush list01 1 2 3结果:3 2 1lpush list01 4 5结果:5 4 3 2 1b)获取指定列表中指定下标区间的元素:lrange key startIndex endIndexlrange list01 1 3结果:4 3 2lrange list01 1 -2 结果: 4 3 2lrange list01 0 -1 结果:5 4 3 2 1 c)将一个或者多个值依次插入到列表的表尾(右侧):rpush key value [value value .....]rpush list02 a b c 结果:a b crpush list02 d e结果:a b c d elpush list02 m n结果: n m a b c d e d)从指定列表中移除并且返回表头元素:lpop keylpop list02 e)从指定列表中移除并且返回表尾元素:rpop keyrpop list02 f)获取指定列表中指定下标的元素:lindex key indexlindex list01 2 结果:3 g)获取指定列表的长度:llen keyllen list01 h)根据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 alrem list03 2 a结果:b b e d c b a alrem list03 -1 a 结果:b b e d c b alrem list03 0 a结果:b b e d c bi)截取指定列表中指定下标区间的元素组成新的列表 , 并且赋值给key:ltrim key startIndex endIndexlpush list04 1 2 3 4 5结果:5 4 3 2 1ltrim list04 1 3lrange list04 0 -1结果:4 3 2j)将指定列表中指定下标的元素设置为指定值: lset key index valuelset list04 1 10l)将value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlauelinsert list04 before 10 50linsert list04 after 10 604)、redis中有关set类型数据的操作命令:单key-多无序value,一个key对应多个vlaue;value之间没有顺序,并且不能重复;通过业务数据直接操作集合:a)将一个或者多个元素添加到指定的集合中:sadd key value [value value ....]*如果元素已经存在 , 则会忽略 。*返回成功加入的元素的个数sadd set01 a b c a结果:a b csadd set01 b d eb)获取指定集合中所有的元素:smembers keysmembers set01c)判断指定元素在指定集合中是否存在:sismember key member*存在,返回1*不存在,返回0sismember set01 fsismember set01 ad)获取指定集合的长度:scard keyscard set01e)移除指定集合中一个或者多个元素:srem key member [member .....]*不存在的元素会被忽略*返回成功成功移除的个数srem set01 b d mf)随机获取指定集合中的一个或者多个元素:srandmember key [count]|->count>0:随机获取的多个元素之间不能重复|->count<0: 随机获取的多个元素之间可能重复sadd set02 1 2 3 4 5 6 7 8srandmember set02srandmember set02 3srandmember set02 -3g)从指定集合中随机移除一个或者多个元素:spop key [count]spop set02h)将指定集合中的指定元素移动到另一个元素:smove source dest membersmove set01 set02 ai)获取第一个集合中有、但是其它集合中都没有的元素组成的新集合:sdiff key key [key key ....]sdiff set01 set02 set03j)获取所有指定集合中都有的元素组成的新集合:sinter key key [key key ....]sinter set01 set02 set03k)获取所有指定集合中所有元素组成的大集合:sunion key key [key key .....]sunion set01 set02 set035)、redis中有关hash类型数据的操作命令:单key:field-valuefield-value.....studentzs:id-1001name-zhangsanage-20 a)将一个或者多个field-vlaue对设置到哈希表中:hset key filed1 value1 [field2 value2 ....]*如果key field已经存在 , 把value会把以前的值覆盖掉hset stu1001 id 1001hset stu1001 name zhangsan age 20 b)获取指定哈希表中指定field的值:hget key fieldhget stu1001 idhget stu1001 name c)批量将多个field-value对设置到哈希表中: hmset key filed1 value1 [field2 value2 ....]hmset stu1002 id 1002 name lisi age 20 d)批量获取指定哈希表中的field的值:hmget key field1 [field2 field3 ....]hmget stu1001 id name age e)获取指定哈希表中所有的field和value:hgetall keyhgetall stu1002 f)从指定哈希表中删除一个或者多个field:hdel key field1 [field2 field3 ....]hdel stu1002 name age g)获取指定哈希表中所有的filed个数:hlen keyhlen stu1001hlen stu1002 h)判断指定哈希表中是否存在某一个field:hexists key fieldhexists stu1001 namehexists stu1002 name i)获取指定哈希表中所有的field列表:hkeys keyhkeys stu1001hkeys stu1002 j)获取指定哈希表中所有的value列表:hvals keyhvals stu1001hvals stu1002 k)对指定哈希表中指定field值进行整数加法运算:hincrby key field inthincrby stu1001 age 5 l)对指定哈希表中指定field值进行浮点数加法运算:hincrbyfloat key field floathset stu1001 score 80.5hincrbyfloat stu1001 score 5.5 m)将一个field-vlaue对设置到哈希表中,当key-field已经存在时 , 则放弃设置;否则,设置file-value:hsetnx key field valuehsetnx stu1001 age 306)、redis中有关zset类型数据的操作命令:有序集合本质上是集合,所有元素不能重复;每一个元素都关联一个分数 , redis会根据分数对元素进行自动排序;分数可以重复;既然有序集合中每一个元素都有顺序,那么也都有下标;有序集合中元素的排序规则又列表中元素的排序规则不一样 。a)将一个或者多个member及其score值加入有序集合:zadd key score member [score member ....]*如果元素已经存在,则把分数覆盖zadd zset01 20 z1 30 z2 50 z3 40 z4zadd zset01 60 z2 b)获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscores]zrange zset01 0 -1zrange zset01 0 -1 withscores c)获取指定有序集合中指定分数区间(闭区间)的元素:zrangebyscore key min max [withscores]zrangebyscore zset01 30 50 withscoresd)删除指定有序集合中一个或者多个元素:zrem key member [member......]zrem zset01 z3 z4 e)获取指定有序集合中所有元素的个数:zcard keyzcard zset01 f)获取指定有序集合中分数在指定区间内的元素的个数:zcount key min maxzcount zset01 20 50 g)获取指定有序集合中指定元素的排名(排名从0开始): zrank key memberzrank zset01 z4===>2 h)获取指定有序集合中指定元素的分数:zscore key memberzscore zset01 z4 i)获取指定有序集合中指定元素的排名(按照分数从大到小的排名):zrevrank key memberzrevrank zset01 z4===>1
推荐阅读
- 1 Redis—问题
- 之四 2流高手速成记:SpringBoot整合redis及mongodb
- Docker_基础知识
- Docker | redis集群部署实战
- 认识 Redis client-output-buffer-limit 参数与源码分析
- Docker | redis安装及测试
- 七 SpringBoot - Redis 缓存
- redis bitmap数据结构之java对等操作
- Redis高可用之主从复制原理演进分析
- flinksql读写redis