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 在过期键中淘汰存活时间短的键