redis常见的命令

本文全面介绍了Redis的各种命令,包括通用命令、String类型、List类型、Hash类型、Set类型等的常用操作,以及Redis客户端redis-cli的使用方法、运维相关命令、性能测试工具redis-benchmark的使用方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通用命令:
	type key 		# 获取key的类型

		
String类型常用命令:

	set:
		set key value 					# 插入key-value对
		setnx key value 				# 若key不存在则插入键值对;若key已经存在,则不插入键值对,返回0。nx:not exist
		setex key 有效期 value 			# 插入键值对并设置有效期(单位为秒)
		mset key1 value1 key2 value2 	# 批量插入键值对,结果只有两种:全部成功并返回ok或全部失败并返回0
		msetnx key1 value1 key2 value2 	# 批量插入键值对,结果只有两种:全部成功并返回ok或全部失败并返回0,如果key1或key2已经存在,则插入全部失败。
		expire key n 					# 设置key对应的键值对的过期时间为n秒
		rename key1 key2 				# 将key1重命名为key2
		del key 						# 删除key对应的键值对
		persist key 					# 删除key的过期时间,使key对应的键值对永久存储。
		
	get:
		get key 						# 获取key对应的value
		getset key value 				# 设置key对应的新值,并返回key对应的旧值
		mget key1 key2 					# 批量获取多个key对应的值
		key pattern 					# 获取匹配pattern的所有key对应的值
		strlen key 						# 获取key对应的value的长度
		exists key 						# 验证key对应的键值对是否存在:1表示存在,0表示不存在	
		ttl key  						# 获取key对应的键值对剩余的生存时间(单位为秒),ttl返回值:正数表示剩余生存时间,-1表示没有过期时间,永久存储,-2表示数据已经被删除。

	其它:
		incr key 			# 对key对应的value进行+1操作,若key不存在,则会将key对应的value设为1,并存储该键值对。若key对应的value的类型不是int类型,则会返回错误。
		incrby key n 		# 对key对应的value进行+n操作,如果key不存在,则会将key对应的value设为n,并储存该键值对。
		decr key 			# 对key对应的value进行-1操作,如果key不存在,则会讲key对应的value设为-1,并存储该键值对。
		decrby key n 		# 等价于incrby key -n
			
		append key appendStr 		# 把appendStr追加到key对应的value的后面
			
		setrange key 下标 替换的字符串 	
			# 替换指定key对应的value从指定下标至最后的值
		getrange key startIndex endIndex
			# 获取指定key对应的value的子串(包含startIndex和endIndex)
			# 字符串左面下标是从0开始的,	eg:获取前3个字符 	getrange key 0 2
			# 字符串右边下标是从-1开始的,	eg:获取最后3个字符	getrange key -3 -1
		
		
		
list(链表)类型常用命令:

	概念:list(链表)类型:每个子元素都是String类型的双向链表
	 
	push:	
		lpush key value 	# 在名称为key的链表 头部(l表示left)添加字符串元素value	
		rpush key value 	# 在名称为key的链表 尾部(r表示right)添加字符串元素value

		lpush key value1 value2 value3  # 在名称为key的链表 头部(l表示left)添加字符串元素value1、字符串元素value2、字符串元素value3
		
	pop:
		lpop key 			# 在名称为key的链表 头部(l表示left)删除一个元素,并返回删除元素。如果链表key不存在或者为空,则立即返回null。
		rpop key 			# 在名称为key的链表 尾部(r表示right)删除一个元素,并返回删除元素,如果链表key不存在或者为空,则立即返回null。
			
		blpop key
		brpop key
			# 阻塞式(b表示block)的获取链表中的元素
			# 优点:避免使用轮询的方式来判断队列(链表)中是否有任务存在。
			
		rpoplpush key1 key2
			# 从名称为key1的链表的尾部移除一个元素,并且将这个元素添加到名称为key2的链表的头部,并返回这个元素,整个操作是一个原子操作。
			# 如果链表key1不存在,或者链表key1是一个空链表,则返回空。
		
	其它:	
		llen key 								# 返回名称为key的链表的长度

		lset key index value 					# 在名称为key的链表中,将(从左边开始)第index元素的值设为value,下标从0开始

		lindex key index 						# 返回名称为key的链表的第index个元素

		lrange key index1 index2 				# 获取名称为key的链表中指定范围的元素
			
		linsert key before elementValue value 	# 在名称为key的链表的elementValue元素之前添加字符串元素value

		lrem key count value 		# 在名称为key的链表中,删除count个和value相同的元素,count>0时,按从头到尾的顺序删除,count=0时,删除全部。
			
		ltrim key index1 index2 	# 在名称为key的链表中,保留index1到index2范围内的数据
		

	
hash类型及操作
	概念:redis中的hash是一个string类型的field和value的映射表。它的添加、删除操作都是O(1),hash特别适合于存储对象。

	hset mapName key value 	# 往名称为mapName的map中添加key-value对,map如果不存在,则自动创建map。如果key-value对已存在,则更新。
	hget mapName key 		# 获取map中指定key的value
	hdel mapName key 		# 删除map中指定的key-value
	hlen mapName 			# 获取map的大小
	hgetall key 			# 获取map中所有的key-value对
	
	
set(集合)类型及操作:
	概念:
	sadd key value 		# 向名称为key的集合中添加字符串元素value
	srem key value 		# 将名称为key的集合中的value元素删除
	smembers key 		# 获取set中所有的元素


	


redis命令行下的客户端redis-cli:

	参数:
		redis-cli --help 查看参数的说明。

	举例:
		# 进入redis命令行,默认操作0号数据库
		redis-3.2.8/bin/redis-cli -h 主机名 -p 端口号 -a 密码

		# 进入redis命令行,并指定操作的数据库
		redis-3.2.8/bin/redis-cli -h 主机名 -p 端口号 -a 密码 -n 1

		# 进入redis命令行并且执行redis的命令
		redis-3.2.8/bin/redis-cli -h 主机名 -p 端口号 -a 密码 -n 1 get myStringKey 



redis运维相关命令:
	ping命令
		# 判断与服务端的链接是否正常

	info命令:
		info
		# 等价于info default,查看服务器的信息

		info all
		# 查看服务器的所有信息

		info server
		# 服务器信息
			redis_version:3.2.8
			executable:/home/jxn/local/bin/./redis-server
			config_file:/home/jxn/local/conf/redis.conf
			tcp_port:8800
			redis_mode:standalone
			process_id:6666
			multiplexing_api:epoll

		info cluster
		# 集群信息

		info memory
		# 内存信息

		info persistence
		# 持久化信息

		info clients
		# 客户端连接信息,connected_clients表示已连接的客户端数量

		info commandstats
		# 命令统计信息,包括:命令的调用次数calls、命令总共耗费CPU时间usec、每个命令平均耗费的CPU时间usec_per_call
		# 举例:cmdstat_get:calls=10,usec=24,usec_per_call=2.40

		info keyspace
		# 数据库中key的统计信息,包括:key的数量等

		info replication
		# 主从信息

		info Sentinel
		# 如果该server是一个哨兵,则显示该哨兵的信息。
		# master0:name=redis1,status=ok,address=127.0.0.1:8800,slaves=3,sentinels=3


	config命令:
		config get *
		# 获取redis服务的配置参数

		config get timeout
		# 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

		config get maxclients
		# 查看服务器设置的最大连接数

		总之一句话:config get一下,redis配置都知道


	client命令:
		client list
		# 查看所有连接到服务器的客户端信息

		属性列表:
			addr		客户端的地址和端口
			fd			套接字所使用的文件描述符
			age 		以秒计算的已连接时长
			idle		以秒计算的空闲时长
			flags		客户端 flag
			db 			该客户端正在使用的数据库 ID
			sub 		已订阅频道的数量
			psub		已订阅模式的数量
			multi		在事务中被执行的命令数量
			qbuf 		查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
			qbuf-free 	查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
			obl 		输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
			oll 		输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
			omem 		输出缓冲区和输出列表占用的内存总量
			events 		文件描述符事件
			cmd 		最近一次执行的命令

	sentinel命令:
		sentinel masters
		# 查看master的状态。

		sentinel slaves masterName
		# 查看该master的slave信息

		sentinel set masterName key value
		# 设置

		SENTINEL failover masterName
		# 强制执行一次故障转移。高优先级的slave将会被提升为master。
		# Force a failover as if the master was not reachable, and without asking for agreement to other Sentinels (however a new version of the configuration will be published so that the other Sentinels will update their configurations)


	monitor命令:
		临时抓取redis中的操作:
			# 抓取一定的数据后,kill掉进程。
			redis-3.2.8/bin/redis-cli -h 主机名 -p 端口号 -a 密码 monitor > ./temp_monitor.log	

		记录redis的操作日志:
			# 使用crontab来定时执行脚本:
			ps aux | grep redis-cli | grep monitor | grep -v grep | awk '{print $2}' | xargs kill
			redis-3.2.8/bin/redis-cli -h 主机名 -p 端口号 -a 密码 monitor > ./$(date +%F)_monitor.log


	slowlog命令:
		slowlog len
		# 慢日志的数量

		slowlog get n
		# 获取前n条慢日志

		slowlog日志内容:
		1) 	1) (integer) 67					# slowlog唯一编号id
		    2) (integer) 1558944860			# 查询的时间戳
		    3) (integer) 12277				# 查询的耗时(微妙
		    4) 1) "scan"					# 查询命令 
		       2) "102759"
		       3) "MATCH"
		       4) "*"
		       5) "COUNT"
		       6) "10000"


redis性能测试:
	工具:redis-3.2.8/bin/redis-benchmark
	说明:可以测试set/get/lpush/lpop/hset/...等操作的性能
	使用:redis-benchmark --help
	参数:
		-c <clients>		Number of parallel connections (default 50)
		-n <requests>		Total number of requests (default 100000)
		-d <size>			Data size of SET/GET value in bytes (default 3)
		-q  				Quiet. Just show query/sec values
		-t <tests>			Only run the comma separated list of tests. The test names are the same as the ones produced as output.
		--csv 				Output in CSV format
	举例:
		redis-benchmark -h 127.0.0.1 -p 6379 -c 20 -n 100000
		# 测试 20个并发连接,10w个请求时redis各操作的性能。

		redis-benchmark -h 127.0.0.1 -p 6379 -c 20 -q -d 10
		# 测试存取大小为10字节数据的性能,只展示query/sec简单信息。

		redis-benchmark -h 127.0.0.1 -p 6379 -c 20 -t set,lpush -n 100000 -q
		# 只测试set,lpush操作的性能。

		redis-benchmark -h 127.0.0.1 -p 6379 -c 20 -n 100000 -q script load "redis.call('set','foo','bar')"
		# 只测试指定数值存取的性能。



redis操作命令:
	# 打开一个客户端,注意:如果是连接哨兵,则ip和端口为哨兵的ip和端口。
	redis-3.2.8/bin/redis-cli -h $(hostname) -p 8800 -a 'mypassword'




redis配置文件:redis.conf

# 设置slave的priority,priority的值越小,优先级越高,0表示禁止将该slave提升为master。
# 
# The slave priority is an integer number published by Redis in the INFO output.
# It is used by Redis Sentinel in order to select a slave to promote into a master if the master is no longer working correctly.
#
# A slave with a low priority number is considered better for promotion, 
# so for instance if there are three slaves with priority 10, 100, 25 Sentinel will pick the one with priority 10, that is the lowest.
#
# However a special priority of 0 marks the slave as not able to perform the role of master, so a slave with priority of 0 will never be selected by Redis Sentinel for promotion.
#
# By default the priority is 100.
slave-priority 100



redis-stat监控工具:

	安装&说明:https://github.com/junegunn/redis-stat
	启动命令:nohup java -jar redis-stat-0.4.14.jar redis机器ip1:redis端口号1 redis机器ip2:redis端口号2 -a redis密码 --verbose --server=web页面端口号 --csv=/data/redis-stat/output.csv &
	结果显示:http://localshot:web页面端口号


	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值