Readis命令

文章目录

    • 通用命令
    • String
    • String之bit
    • Hash
    • List
    • Set
    • ZSet
    • 发布和订阅

Redis中的数据都是key/value对,这里的数据类型指的是value的值的类型

数据类型 说明
String 是Redis中最基本的数据类型,二进制安全的,它可以包含任意数据类型。如图片。Redis中String类型的数据上限的512M
Hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿 )
List Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
Set Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)
ZSet 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)
redis登陆:[root@i redis-4.0.12]# ./src/redis-cli

通用命令

五种数据类型的数据的结构差异所以命令也不尽相同,但是还是有一些相通的命令。所以此处先介绍下通用命令

	SELECT命令 		
					在redis中,默认一共有16个数据库,编号为0-15,正常情况下,
					用户登录成功后,首先看到的是0号库,可以手动切换为其他库
					使用 : 127.0.0.1:6380> select 4
					
	DEL命令 		
	 				该命令用于在 key 存在时删除 key,返回数字表示删除的记录数
					使用: 127.0.0.1:6379> del name
					
	DUMP命令
					序列化给定 key ,并返回被序列化的值。如果key不存在返回nil
					使用: 127.0.0.1:6379> dump name
						"\x00\x03dpb\t\x00\xe5\xa2\xc4\xd1\xfc\xb2\xd9\xcb"
						
	EXISTS命令
					检查key是否存在,1表示存在,0表示不存在
					使用: 127.0.0.1:6379> exists name
						(integer) 1
						
	EXPIRE命令
					是指有效时间,单位秒
					使用: 127.0.0.1:6379> expire name 120
						(integer) 1
						127.0.0.1:6379> ttl name
						(integer) 112     		//112是剩余的有效时间。

	TTL命令
					以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)
					-2表示key不存在,-1表示没有设置有效时间,不会过期,我们可以通过EXPIRE key 设置有效时间
					使用: 127.0.0.1:6379> ttl name
						(integer) -1

	PEXPIRE命令
					同样是设置过期时间,只是单位是毫秒
					使用: 127.0.0.1:6379> pexpire name 100
						(integer) 1
						127.0.0.1:6379> ttl name
						(integer) -2			//100毫秒比较短暂,-2表示已经不存在了。
						
	PTTL命令
						和ttl命令一样,只是返回单位是毫秒
						使用: 127.0.0.1:6379> pexpire name 100000
							(integer) 1
							127.0.0.1:6379> ttl name
							(integer) 91
							127.0.0.1:6379> pttl name
							(integer) 84601
							
	KEYS
						通过正则表达式查找符合条件的key,
						使用: 127.0.0.1:6379> keys *      //keys * 查询所有的key
							1) "age"
							2) "address"
							3) "sex"
							
	RANDOMKEY
						从当前数据库中随机返回一个key
	
	TYPE命令
						返回key对应的数据类型,不存在返回的是none
						使用:127.0.0.1:6379> type name
						none
						127.0.0.1:6379> type age
						string
						127.0.0.1:6379> type sex
						string
	RENAME
	
						修改key的名称
						使用: 127.0.0.1:6379> rename age age1
							OK
							127.0.0.1:6379> exists age
							(integer) 0
	
	flushdb
	
						清空当前库   慎用!!!
	
	flushall
	
						清空所有库   慎用!!!

String

		命令 	说明
		set 	设置key的值
		get 	获取对应的key的值
		strlen 	获取key的值的长度
		append 	在原有的value的基础上追加内容
		incr 	将key存储的内容加1
		incrby 	将key存储的内容加指定的值
		incrbyfloat 	将key存储的内容累加一个float类型的数据
		decr 	将key存储的内容减1
		decrby 	将key存储的内容减去指定的值
		getrange 	截取value的值
		setrange 	修改value的部分内容,根据偏移量修改
		getset 	获取设置key的值并返回原来的旧值
		mget 	批量获取值
		mset 	批量设置值
		setex 	设置key对应的value,同时设置过期时间,单位是秒
		psetex 	设置key对应的value,同时设置过期时间,单位是毫秒
		setnx 	只有在 key 不存在时设置 key 的值,set if not exists
		msetnx 	兼具了mset和setnx的特性

String之bit

Redis中字符串的存储方式都是以二进制的方式存储的。
  比如:

127.0.0.1:6379> set k1 a
OK

 k1的值为a,对应的ascii码是97,转换为二进制就是01100001。BIT命令就是对这个二进制数据进行操作的。
 不常用,能优化到这说明你蛮强的了!

		命令 	说明
		getbit 	获取二级制中对应偏移量的值
		setbit 	设置对应二进制位的值
		bitcount 	统计二进制中位中为1的个数
		bitop 	对二进制数据做位元操作,与,或,非,异或操作
		bitpos 	返回字符串里面第一个被设置为1或者0的bit位

Hash

在实际开发过程中我们肯定会碰到很多需要存储对象的需求,此时hash就比较合适了。hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

		命令 	说明
		hset 	设置key中字段的值
		hget 	获取key中字段的值
		hmset 	批量设置key中的字段
		hmget 	批量获取key中字段的值
		hdel 	删除key中指定的字典
		hsetnx 	设置key中的字段的值,如果字段存在就忽略
		hvals 	获取key中所有的字段的值
		hkeys 	获取key中的所有的字段
		hgetall 	获取key中的所有的字段及值
		hexists 	判断key中的字段是否存在
		hincrby 	将key中的字段增加特定的值
		hincrbyfloat 	和hincrby类似增加的float类型的数据
		hlen 	获取key中的字段的个数
		hstrlen 	获取key中某个字段的值得长度

List

有序,可重复
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

		命令 	说明
		lpush 	向列表头部添加一个或多个元素
		lrange 	获取列表中指定的元素0第一个,-1最后一个
		rpush 	向列表尾部添加一个或多个元素
		llen 	获取列表长度
		lset 	通过index设置列表的值
		rpop 	移除列表最后一个元素,并返回
		lpop 	移除列表头部元素,并返回
		lindex 	获取列表中对应下标的值
		ltrim 	截取列表对应的元素
		blpop 	lpop的阻塞版
		brpop 	rpop的阻塞版
		rpoplpush 	移除一个列表的最后一个元素,并将该元素添加到另一个列表的头部
		brpoplpush 	rpoplpush的阻塞版本

Set

无序,不可重复
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

		命令 	说明
		sadd 	添加一个或多个元素到集合中,如果集合中存在该元素则忽略
		scard 	返回集合中的元素的个数
		sismember 	判断集合中是否含有某元素
		smembers 	获取集合中的所有的元素
		srem 	删除集合中指定的元素
		srandmember 	随机返回集合中的元素,版本2.6后在命令之后可以跟一个count。指定随机返回的元素个数
		spop 	和srandmember类似,只是spop会将获取的元素移除而srandmember不会移除元素
		smove 	将元素从一个集合移动到另一个集合中
		sdiff 	返回两个集合的差集
		sdiffstore 	和sdiff类似,不同的是会将差集结果保存起来
		sinter 	获取两个集合的交集
		sinterstore 	和sinter类似,不同的是将结果保存起来了
		sunion 	获取两个集合的并集
		sunionstore 	获取两个集合的并集并保存起来

ZSet

上面介绍了Redis中的Set集合,Set集合是无序的不可重复的。而下面要介绍的ZSet其实是在Set的基础上绑定了一个score来实现集合数据按照score排序的集合

有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。

		命令 	说明
		zadd 	向有序集合中添加一个或多个 分数/元素对
		zscore 	获取有序集合中元素对应的分数
		zrange 	获取集合中的元素,如果加上withscores则会连同分数一并返回
		zrevrange 	和zrange类似,只是将结果倒序了
		zcard 	返回集合中元素的个数
		zcount 	统计集合中分数在min和max之间的元素个数
		zrangebyscore 	可以根据score范围查找元素
		zrank 	获取元素在集合中的排名,从小到大,最小的是0
		zrevrank 	获取元素在集合中的排序,从大到小
		zincrby 	给元素增加分数,如果不存在就新创建元素,并赋予对应的分数
		zinterstore 	计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
		zrem 	从集合中删除一个元素
		zlexcount 	计算有序集合中指定字典区间内成员数量
		zrangebylex 	获取指定区间的元素,分数必须相同

发布和订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:
发送者(pub)发送消息
订阅者(sub)接收消息
Redis 客户端可以订阅任意数量的频道

订阅消息
			客户端订阅消息的命令如下
			使用: 127.0.0.1:6379> subscribe c1 c2 c3
			
发送消息如下命令
			127.0.0.1:6379> publish c1 "hello redis"
			(integer) 1
			127.0.0.1:6379> publish c2 'hehe'
			(integer) 1
			
客户端同时会接收到消息:
			127.0.0.1:6379> subscribe c1 c2 c3
			Reading messages... (press Ctrl-C to quit)
			1) "subscribe"
			2) "c1"
			3) (integer) 1
			1) "subscribe"
			2) "c2"
			3) (integer) 2
			1) "subscribe"
			2) "c3"
			3) (integer) 3
			1) "message"
			2) "c1"
			3) "hello redis" #接收到c1发送的消息
			1) "message"
			2) "c2" 
			3) "hehe" #接收到c2发送的消息

模式订阅消息

客户端在订阅消息的时候还可以通过模式匹配订阅的方式订阅,如下

订阅
			127.0.0.1:6379> psubscribe c*
发送消息,没有区别
	
			127.0.0.1:6379> publish c1 "hello redis"
接收消息

			127.0.0.1:6379> psubscribe c*

切记,发布订阅要注意网络连接断开的话需要重新连接,此时就会有可能数据的丢失。这个需要注意

你可能感兴趣的:(Readis命令)