首页 > 数据库 >Redis 02: redis基础知识 + 5种数据结构 + 基础操作命令

Redis 02: redis基础知识 + 5种数据结构 + 基础操作命令

时间:2022-10-23 20:58:21浏览次数:50  
标签:02 操作命令 redis 数据库 Redis 指定 value key 下标

Redis基础知识

1)、测试redis服务的性能:
       redis-benchmark
       
2)、查看redis服务是否正常运行:
       ping  如果正常---pong
       
3)、查看redis服务器的统计信息:
       info  查看redis服务的所有统计信息
       info [信息段] 查看redis服务器的指定的统计信息,如:info Replication
       
4)、redis的数据库实例:作用类似于mysql的数据库实例,redis中的数据库实例只能由redis服务来创建和维护,开发人员不能修改和自行创建数据库实例;
默认情况下,redis会自动创建16个数据库实例,并且给这些数据库实例进行编号,从0开始,一直到15,使用时通过编号来使用数据库;
可以通过配置文件,指定redis自动创建的数据库个数;redis的每一个数据库实例本身占用的存储空间是很少的,所以也不造成存储空间的太多浪费。
默认情况下,redis客户端连接的是编号是0的数据库实例;可以使用select index切换数据库实例。

5)、查看当前数据库实例中所有key的数量:dbsize

6)、查看当前数据库实例中所有的key:keys *   

7)、清空数据库实例:flushdb

8)、清空所有的数据库实例:flushall

9)、查看redis中所有的配置信息:config get *
    查看redis中的指定的配置信息:config get parameter

Redis的五种数据结构

程序是用来处理数据的,Redis是用来存储数据的;程序处理完的数据要存储到redis中,不同特点的数据要存储在Redis中不同类型的数据结构中。

字符串:   zhangsan  20   true                    1.string 单key:单value: username:zhangsan age:20

list列表: 13900009999 [email protected] 321321          2.list   单key:多有序value: contacts:13900009999,xxx,xxxx

set集合:  beijing shanghai chongqing tianjin     3.set    单key:多无序value:city:bj sh cq tj

pojo:    id:1001,name:zhangsan,age:20            4.hash   单key: 对象(属性:值):
	                                                           student:id:1001,name:zhangsan,age:20
                                                  5.zset   单key:多有序vlaue:
					                        city:
					                        1000 tj,1200 cq,1500 sh,2000 bj

Redis中的操作命令

1)、redis中有关key的操作命令:
    a)查看数据库中的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
	 
    b)判断key在数据库中是否存在:exists key 如果存在,则返回1;如果不存在,则返回0
                             exists key [key key ....] 返回值是存在的key的数量
         exists k1
         exists k1 k2 k3 hello
	     
    c)移动指定key到指定的数据库实例:move key index
         move k 1
                                
    d)查看指定key的剩余生存时间:ttl key
			       |->如果key没有设置生存时间,返回-1
                      	       |->如果key不存在,返回-2
         ttl k1
         ttl k2
	     
     e)设置key的最大生存时间:expire key seconds
         expire k2 20
         
     f)查看指定key的数据类型:type key
         type k1
         
     g)重命名key: rename key newkey
         rename hello k2
         
     h)删除指定的key:del key [key key .....] 
                            |->返回值是实际删除的key的数量
	 del k1 k2 k3 k4
	     
2)、redis中有关string类型数据的操作命令:
    a)将string类型的数据设置到redis中:set 键 值
         set zsname zhangsan
	 set zsage 20
	 set totalRows 100
	 set zsage 30 如果key已经存在,则后来的value会把以前的value覆盖掉.
	     
       b)从redis中获取string类型的数据:get 键
         get zsname
	 get zsage
	 get totalRows
	     
       c)追加字符串:append key value
                      |->返回追加之后的字符串长度
		      |->如果key不存在,则新创建一个key,并且把value值设置为value。
         set phone 1389999
	 append phone 8888
	     
       d)获取字符串数据的长度:strlen key
         strlen phone
         
       e)将字符串数值进行加1运算:incr key
                              |->返回加1运算之后的数据
			      |->如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算。
			      |->要求key所表示value必须是数值,否则,报错
         incr zsage
	 incr age
         incr 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 10
         
       h)将字符串数值进行减offset运算:decrby key offset
				               |->返回减offset运算之后的数据
				               |->如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算。
				               |->要求key所表示value必须是数值,否则,报错
         decrby zsage 10
         
       i)闭区间获取字符串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
         
       j)用value覆盖从下标为startIndex开始的字符串,能覆盖几个字符就覆盖几个字符:setrange key startIndex value
         setrange zsname 5 xiaosan   //zhangxiaosan
	 setrange zsname 5 lao       //zhanglaoosan
	     
       k)设置字符串数据的同时,设置它最大生命周期:setex key seconds value
         setex k1 20 v1
         
       l)设置string类型的数据value到redis数据库中,当key不存在时设置成功,否则,则放弃设置:setnx key value
         setnx zsage 20
         
       m)批量将string类型的数据设置到redis中:mset 键1 值1 键2 值2 .....
         mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5
         
       n)批量从redis中获取string类型的数据:mget 键1 键2 键3.....
         mget k1 k2 k3 k4 k5 k6 zsname zs age totalRows
         
       o)批量设置string类型的数据value到redis数据库中,当所有key都不存在时设置成功,否则(只要有一个已经存在),则全部放弃设置:msetnx 键1 值1 键2 值2 .....
         msetnx kk1 vv1 kk2 vv2 kk3 vv3 k1 v1
         
         
         
         
3)、redis中有关list类型数据的操作命令:单key-多有序value,一个key对应多个value;
          多个value之间有顺序,最左侧是表头,最右侧是表尾;
	  每一个元素都有下标,表头元素的下标是0,依次往后排序,最后一个元素下标是列表长度-1;
	  每一个元素的下标又可以用负数表示,负下标表示从表尾计算,最后一个元素下标用-1表示;
	  元素在列表中的顺序或者下标由放入的顺序来决定。
	  通过key和下标来操作数据。 
		  
	a)将一个或者多个值依次插入到列表的表头(左侧):lpush key value [value value .....]
	   lpush list01 1 2 3  结果:3 2 1
	   lpush list01 4 5    结果:5 4 3 2 1
	   
    b)获取指定列表中指定下标区间的元素: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
	   
	c)将一个或者多个值依次插入到列表的表尾(右侧):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
	   
	d)从指定列表中移除并且返回表头元素:lpop key
	    lpop list02
	    
	e)从指定列表中移除并且返回表尾元素:rpop key
	    rpop list02
	    
	f)获取指定列表中指定下标的元素:lindex key index
	   lindex list01 2 结果:3
	   
	g)获取指定列表的长度:llen key
	   llen 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 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
	   
	 i)截取指定列表中指定下标区间的元素组成新的列表,并且赋值给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
	   
      j)将指定列表中指定下标的元素设置为指定值: lset key index value
	   lset list04 1 10
       
      l)将value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlaue
	   linsert list04 before 10 50
	   linsert list04 after 10 60
	   
4)、redis中有关set类型数据的操作命令:单key-多无序value,一个key对应多个vlaue;
	    value之间没有顺序,并且不能重复;
	    通过业务数据直接操作集合:
	    
	   a)将一个或者多个元素添加到指定的集合中:sadd key value [value value ....]
	  		*如果元素已经存在,则会忽略。 
	  		*返回成功加入的元素的个数
	  		sadd set01 a b c a  结果:a b c
	  		sadd set01 b d e
	  		
	   b)获取指定集合中所有的元素:smembers key
	  		smembers set01
	  		
	   c)判断指定元素在指定集合中是否存在:sismember key member
	  		*存在,返回1
	  		*不存在,返回0
	  		sismember set01 f
	 	    sismember set01 a
	 	    
		d)获取指定集合的长度:scard key
	  		scard set01
	  		
		e)移除指定集合中一个或者多个元素:srem key member [member .....]
	  		*不存在的元素会被忽略
	  		*返回成功成功移除的个数
	  		srem set01 b d m
	  		
		f)随机获取指定集合中的一个或者多个元素: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
	  		
		g)从指定集合中随机移除一个或者多个元素:spop key [count]
	  		spop set02
	  		
		h)将指定集合中的指定元素移动到另一个元素:smove source dest member
	  		smove set01 set02 a
	  		
		i)获取第一个集合中有、但是其它集合中都没有的元素组成的新集合:sdiff key key [key key ....]
	  		sdiff set01 set02 set03
	  		
		j)获取所有指定集合中都有的元素组成的新集合:sinter key key [key key ....]
	  		sinter set01 set02 set03
	  		
		k)获取所有指定集合中所有元素组成的大集合:sunion key key [key key .....]
	  		sunion set01 set02 set03
	  		
5)、redis中有关hash类型数据的操作命令:单key:field-value
                       field-value
		       .....
		       studentzs:id-1001
	               name-zhangsan
	               age-20
	a)将一个或者多个field-vlaue对设置到哈希表中:hset key filed1 value1 [field2 value2 ....] 
	  *如果key field已经存在,把value会把以前的值覆盖掉
	  hset stu1001 id 1001
	  hset stu1001 name zhangsan age 20
	  
	b)获取指定哈希表中指定field的值:hget key field
	  hget stu1001 id
	  hget 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 key
	  hgetall stu1002
	  
	f)从指定哈希表中删除一个或者多个field:hdel key field1 [field2 field3 ....]
	  hdel stu1002 name age
	  
	g)获取指定哈希表中所有的filed个数:hlen key
	  hlen stu1001
	  hlen stu1002
	  
	h)判断指定哈希表中是否存在某一个field:hexists key field
	  hexists stu1001 name
	  hexists stu1002 name
	  
	i)获取指定哈希表中所有的field列表:hkeys key
	  hkeys stu1001
	  hkeys stu1002
	  
	j)获取指定哈希表中所有的value列表:hvals key
	  hvals stu1001
	  hvals stu1002
	  
	k)对指定哈希表中指定field值进行整数加法运算:hincrby key field int
	  hincrby stu1001 age 5
	  
	l)对指定哈希表中指定field值进行浮点数加法运算:hincrbyfloat key field float
	  hset stu1001 score 80.5
	  hincrbyfloat stu1001 score 5.5
	  
	m)将一个field-vlaue对设置到哈希表中,当key-field已经存在时,则放弃设置;否则,设置file-value:hsetnx key field value
	  hsetnx stu1001 age 30
	  
6)、redis中有关zset类型数据的操作命令:有序集合
          本质上是集合,所有元素不能重复;
	  每一个元素都关联一个分数,redis会根据分数对元素进行自动排序;
	  分数可以重复;
	  既然有序集合中每一个元素都有顺序,那么也都有下标;
	有序集合中元素的排序规则又列表中元素的排序规则不一样。
					    
	a)将一个或者多个member及其score值加入有序集合:zadd key score member [score member ....]
	  *如果元素已经存在,则把分数覆盖
	  zadd zset01 20 z1 30 z2 50 z3 40 z4
	  zadd zset01 60 z2
	  
	b)获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscores]
          zrange zset01 0 -1
	  zrange zset01 0 -1 withscores
	  
	c)获取指定有序集合中指定分数区间(闭区间)的元素:zrangebyscore key min max [withscores]
	  zrangebyscore zset01 30 50 withscores
	  
    d)删除指定有序集合中一个或者多个元素:zrem key member [member......]
	  zrem zset01 z3 z4
	  
	e)获取指定有序集合中所有元素的个数:zcard key
	  zcard zset01
	  
	f)获取指定有序集合中分数在指定区间内的元素的个数:zcount key min max
          zcount zset01 20 50
          
	g)获取指定有序集合中指定元素的排名(排名从0开始): zrank key member
	  zrank zset01 z4  ===>2
	  
	h)获取指定有序集合中指定元素的分数:zscore key member
	  zscore zset01 z4
	  
	i)获取指定有序集合中指定元素的排名(按照分数从大到小的排名):zrevrank key member
	  zrevrank zset01 z4  ===>1

标签:02,操作命令,redis,数据库,Redis,指定,value,key,下标
From: https://www.cnblogs.com/nefu-wangxun/p/16819485.html

相关文章

  • 【公告】布客社区公告 2022.10
    布客社区将花N年时间转型为DAO翻译和整理合并为一个工作流(同一段时间只做一个),并且按照编程、玄学、两性、财务顺序轮替。高校课件整理与备份计划正式开始,感谢github上各......
  • 1024特别篇:快速上手ES索引模版
    ES(8.1)认证工程师考题大纲参考如下https://mp.weixin.qq.com/s/x7lMmMAo2563JysMJ8vgRQ1、题目今天咱们讨论的是《索引模板的创建与使用》大体思路如下:分两部分处理......
  • DASCTF X GFCTF 2022十月挑战赛
    DASCTFXGFCTF2022十月挑战赛EasyPOP<?phphighlight_file(__FILE__);error_reporting(0);classfine{private$cmd;private$content;publicfun......
  • 2022-2023-1 20221310 《计算机基础与程序设计》第8周学习总结
    作业信息|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP||这个作业要求在哪里|<作业要求的链接>https://www.cnblogs.com/rocedu/p/9......
  • 【Java复健指南07】OOP中级02-重写与多态思想
    前情提要:https://www.cnblogs.com/DAYceng/category/2227185.html重写注意事项和使用细节方法重写也叫方法覆法,需要满足下面的条件1.子类的方法的参数,方法名称,要和父......
  • 【闲话】2022.10.23
    今天没有考试于是赫了些DP题每日一(?)图密码是咱最喜欢的番二度提示:我们一日日……记得第一个字母大写怎么登不上SPOJ啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊今......
  • 2022-2023-1学期 20221417 《计算机基础与程序设计》第8周学习总结
    这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第八周作业)......
  • Redis 01: 非关系型数据库 + 配置Redis
    数据库应用的发展历程单机数据库时代:一个应用,一个数据库实例缓存时代:对某些表中的数据访问频繁,则对这些数据设置缓存(此时数据库中总的数据量不是很大)水平切分时......
  • 浪潮1024工程师文化节编程大赛
    1.https://nanti.jisuanke.com/t/T1649简单模拟,对其从横方向和竖方向进行暴力搜索即可#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineI......
  • 2022-2023-1 20221422 《计算机基础与程序设计》第八周学习总结
    作业信息班级链接https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP/作业要求https://www.cnblogs.com/rocedu/p/9577842.html#JXJC作业目标功能设计与面向......