Reids基础知识

  • 1 Redis的基本使用
  • 1.1 Reids简介
  • 1.2 Redis的五大基本数据类型
  • 1.2.1 String(字符串)
  • 1.2.2 Hash(哈希)
  • 1.2.3 List(有序可重复集合)
  • 1.2.4 Set(无序不可重复集合)
  • 1.2.5 ZSet(有序不可重复集合)
  • 1.3 Redis事务
  • 1.4 Redis持久化策略
  • 1.5 Redis淘汰策略


1 Redis的基本使用

1.1 Reids简介

Redis是一种基于内存的数据库,它的优点有:
	1、性能极高,作用于内存,读的速度是110000次/s,写的速度是81000次/s
	2、丰富的数据类型,支持string、hash、list、set及zset多种数据类型
	3、原子性,所有操作都是原子性的,支持事务
	4、丰富的特性,支持发布订阅、通知、过期策略等
	5、支持持久化,可以将内存中的数据保存在磁盘中,重启后再次加载
	6、支持分布式,理论上可以无限扩展
	7、单线程,没有线程并发问题

1.2 Redis的五大基本数据类型

1.2.1 String(字符串)

String是Redis中最常用的数据类型,以键值对的形式存在,可以通过键来获取值;
	常用方法有:
	1、set name aaa 			设置一个key为’name‘,value为‘aaa’的字符串;
	2、get name					获取key为‘name’的数据;
	3、Exists name				判断key为‘name’的数据是否存在,存在就返回1,不存在返回0;
	4、STRLEN name				获取key为‘name’的数据的长度;
	5、APPEND name b			往key为’name‘的数据后拼接b,如果key为’name‘的数据不存在会新建一个key为’name‘的字符串;
	6、incr num					指定key为‘num’的数据自增1,返回结果;
	7、decr num					指定key为‘num’的数据自减1,返回结果;
	8、INCRBY num value			指定key为‘num’的数据自增value,返回结果;
	9、DECRBY num value			指定key为‘num’的数据自减value,返回结果;
	10、GETRANGE key beginIndex endIndex	截取字符串,从beginIndex 开始,endIndex结束,0~-1表示截取全部;
	11、SETRANGE key2 beginIndex endIndex  	从指定位置开始替换,替换的数据根据你所需替换的长度一致,返回值是替换后的长度;
	12、setex name time aaa					设置一个key为’name‘,value为‘aaa’的字符串,过期时间为time;
	13、ttl name							查看键为‘name’的值的过期时间,为负数表示已过期;

1.2.2 Hash(哈希)

Hash可以看作是多个键值对,比较适合存储对象;
	常用方法有:
	1、hset user name zs age 23 		设置一个name为zs,age为23的hash,名字为user;
	2、hget user name					从名字为user的hash中获取键为name的数据;
	3、hgetall user						获取名字为user的hash的所有的键和值;
	4、hdel user name age				从名字为user的hash中删除指定键name和age(指定参数,可以删除一个或多个);
	5、hlen user						获取名字为user的hash的长度;
	6、HEXISTS user name 				从名字为user的hash中判断有没有键为name的数据,有返回1,没有返回0;
	7、hkeys user						查看名字为user的hash中所有的键
	8、hvals user						查看名字为user的hash中所有的value

1.2.3 List(有序可重复集合)

List是有序可重复的集合;
	常用方法有:
	1、lpush/rpush list val  					从左侧/右侧向list中插入val;
	2、LRANGE list beginIndex endIndex 			从左测向右查询list中从beginIndex到endIndex的数据;
	3、lpop/rpop								从左侧/右侧头部移除第一个元素;
	4、lindex list index						查询list中下标为index的元素;
	5、llen list 								查看list的长度;
	6、lrem list count aa 						根据value移除,移除list中值为aa的元素count个;
	7、ltrim list beginIndex endIndex 			通过下标截取指定的长度,截取后只剩下我们所指定截取后的元素;
	8、rpoplpush list newlist  					移除list集合中的最后一个元素到新的集合newlist中,返回值是移除的最后一个元素值;

1.2.4 Set(无序不可重复集合)

元素唯一不可重复
	常用方法有:
	1、sadd set zs ls ww zl 					添加set集合 ;
	2、SMEMBERS set  							查看set中所有元素;
	3、SISMEMBER set zs							判断某个值在不在set中,在返回1,不在返回0;
	4、SCARD set  								查看集合的长度;
	5、srem set zs  							移除set中指定的元素;
	6、SRANDMEMBER set 1  						随机抽取set中1个元素返回;
	7、sdiff/sinter/sunion						差集/交集/并集;

1.2.5 ZSet(有序不可重复集合)

常用方法有:
	1、zadd myzset 1 one 2 two 3 three  		添加zset值,可多个;
	2、ZRANGE myzset 0 -1  						查询所有的值;
	3、ZRANGEBYSCORE myzset -inf +inf  			将zset的值根据key来从小到大排序并输出,-inf 负无穷  +inf 正无穷;
	4、ZREVRANGE myzset +inf -inf  				从大到小排序输出
	5、ZRANGEBYSCORE myzset -inf +inf withscores查询指定zset的所有值,包含key的值

1.3 Redis事务

1、multi 		开启事务;
	2、exec			执行事务;
	3、discard		放弃事务;
	4、watch		监视一个或多个key,如果key在提交事务之前被修改过,那么事务执行失败;
	5、unwatch 		取消watch的监视

1.4 Redis持久化策略

1、AOF:每秒对数据进行持久化;
	2、RDB:按条件触发持久化操作;
		1)900	1	900秒钟修改一次
		2)300	10	300秒修改10次
		3)60	10000	60秒修改10000次
	允许少量数据丢失,使用RDB;
	允许很少数据丢失,使用AOF;
	几乎不允许数据丢失,使用RDB+AOF;

1.5 Redis淘汰策略

Redis中的数据太多可能导致内存溢出,Redis会根据情况淘汰一些数据。
	配置淘汰策略 
		maxmemory-policy
	值:
	noevication			(默认)不淘汰
	allkeys-lru			(推荐)使用LRU算法淘汰比较少使用的键
	volatile-lru 		在过期的键中淘汰较少使用的
	allkeys-lfu			在全部键中淘汰使用频率最少的键
	volatile-lfu		在过期的键中淘汰使用评论最少的
	allkeys-random		在所有键中随机淘汰
	volatile-random		在过期键中随机淘汰
	volatile-ttl		在过期键中淘汰存活时间短的键