redis学习day01---string字符串

1.redis的简介
	redis是开源的(BSD协议),使用ANSI C编写,基于内存的且持久化,高性能的key-value的NoSQL数据库
	支持数据结构类型丰富,有如字符串(String),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。
	用途:缓存(StackOverFlow),数据库(微博),消息中间件(微博)
2.键key
	(1)Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单的字符串到一个JPG文件的内容都可以。空字符串也是有效key值
	(2)key取值原则:
		键值不需要太长,消耗内存,且在数据中查找这类键值的计算成本较高
		键值不宜过短,可读性较差。
3.命令:	
	(1)设置字符串值
			set key value [EX seconds] [PX millisenconds][NX|XX]
			EX设置过期时间,秒,等同于setex key seconds value
			PX设置过期时间,毫秒,等同于pesetex key milliseconds value
			NX键不存在,才能设置,等同于setnx key value
			XX键存在,才能设置
			设置多个键的字符串值
			mset key value [key value ...]
		 	键不存在时,设置字符串值
			msetnx key value [key value ...]
		注意:这是原子操作。
		例子:
			set s1 abc
			set s2 12
			set s1 ABC XX
			set se abc ex 15
			mset s3 3 s4 4 s5 5 
			msetnx s5 A5 s6 6
		(2)过期
			redis可以给key设置一个生存时间(秒或者毫秒),当达到这个时长后,这些键值将会被自动删除
			设置多少秒或者毫秒后过期
				EXPIRE key seconds
				PEXPIRE key milliseconds
			设置在指定Unix时间戳过期
				EXPIREAT key timestamp
				PEXPIREAT key milliseconds-timestamp
			删除过期
				PERSIST key
		(3)生存时间
				Time To Live,key的剩余生存时间
			 查看剩余生存时间
			 	TTL key
			 	PTTL key 
			 	key存在但没有设置TTL,返回-1
			 	key存在,但还在生存期内,返回剩余的秒或者毫秒
			 	key曾经存在,但已经消亡,返回-2(2.8版本之前返回-1)
			 	例子:
			 		set se abc ex 15
			 		ttl s6
			 		expire s6 60
			 		pttl s6
			 		persist s6
			 		pttl s6
			 		EXPIREAT cache 1355292000
			 		PEXPIREAT mykey 1555555555005
	 	(4)查找键
	 			keys pattern
	 		pattern取值:
	 			*任意长度字符
	 			?任意一个字符
	 			[]字符集合,表示可以是集合中的任意一个
	 			例子:
	 				keys s*
	 				keys s?
	 				keys s[13]
	 				keys *
	 				keys ??
	 	(5)键类型
	 			TYPE key
	 	(6)键是否存在
	 			EXISTS key
	 	(7)键重命名
	 			RENAME key newkey
	 			RENAMENX key newkey
	 	(8)键删除
	 			DEL key [key ...]
	 	(9)获取值
	 			get key
	 		 获取多个给定的键的值
	 		 	mget key [key ...]
	 		 返回旧值并设置新值
	 		 	getset key value
	 		 	如果键的不存在,就创建并赋值
	 		 字符串长度
	 		 	strlen key
	 	(10)追加字符串
	 			append key value
	 			如果键存在就追加,如果不存在就等同于set key value
	 			获取子字符串
	 				getrange key start end
	 				索引值从0开始,负数表示字符串右边向左边数起,-1表示最右一个字符
	 			覆盖字符
	 				setrange key offset value
	 			例子:
	 				APPEND s6 123
					getrange s1 1 2
					getrange s1 0 -1
					getrange s1 -2 -1
					getrange s1 0 10000
					SETRANGE s6 3 e
					SETRANGE s6 3 efghijk
					SETRANGE newkey 5 hello
					SETRANGE s6 3 efghijk
		(11)步长1的增减
					INCR key
					DECR key
					字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
			    步长增减
			    	INCRBY key decrement
			    	DECR key decrement
			         字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串。
4.位图bitmap
		位图不是真正的数据类型,它是定义在字符串类型中
		一个字符串类型的值最多能存储512字节的内容
		位上限:2^(9+10+10+3)=2^32b
		(1)设置某一位上的值
				SETBIt key offset value
				offset偏移量,从0开始
				value不写,默认是0
		(2)获取某一位上的值
				getbit key offset
		(3)返回指定值0或者1在指定区间上第一次出现的位置
			bitpos keys bit [start][end]
			例子:
				set str1 ab
				setbit str1 6 1
				setbit str1 7 0
				get str1
5.位操作:
		对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 dteskey 上
		operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种
		BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey
		BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey
		BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
		BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey
		除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入
		当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0
	空的 key 也被看作是包含 0 的字符串序列
6.统计指定位区间上值为1的个数
		BITCOUNT key [start][end]
		从左向右从0开始,从右向左从-1开始,注意官方start、end是为,测试后是字节
		BITCOUNT testkey 0 0表示从索引为0个字节到索引为0个字节,就是第一个字节的统计
		BITCOUNT testkey 0 -1等同于BITCOUNT testkey
		最常用的就是BITCOUNT testkey
7.其他命令:
		登录不同的库
			redis-cli --help
			redis-cli -n 2
		清除当前库数据
			FLUSHDB
		清楚所有库中的数据
			FLUSHALL
8.案例:
		(1)网站用户的上线次数统计(活跃用户) ,用户ID作为key,天作为offset,上线置为1
		ID为500的用户,今年的第一天上线,第30天上线
			setbit u500 1 1
			setbit u500 30 1
			bitcount u500
			keys u*
		(2)按天统计网站活跃用户,天作为key,用户ID作为offset,上线置为1
		求一段时间内活跃用户数
			setbit 20160602 15 1 
			sebit 20160601 123 1
			setbit 20160606 123 1
			求6月1日到6月10日的活跃用户
			bitop or 20160601-10  20160601 20160602 20160603 20160610
			bitcount 20160601-10
			结果为2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值