redis介绍以及redis中数据的过期时间

1.Redis数据库介绍

       redis数据库是一种基于内存可持久化的键值对非关系性数据库。为了保证效率,redis的数据都是缓存在内存中的,区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

       Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

       Redis是基于内存管理的数据库,所以内存开销方面需要进一步优化

       ①.首先最重要的一点是不要开启Redis的VM选项,即虚拟内存功能,这个本来是作为Redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,但是其内存管理成本也非常的高,并且我们后续会分析此种持久化策略并不成熟,所以要关闭VM功能,请检查你的redis.conf文件中 vm-enabled 为 no
  ②.其次最好设置下redis.conf中的maxmemory选项,该选项是告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。

       ③.如果在Redis内部存储的大部分数据是数值型的话,Redis内部采用了一个shared integer的方式来省去分配内存的开销,即在系统启动时先分配一个从1~n 那么多个数值对象放在一个池子中,如果存储的数据恰好是这个数值范围内的数据,则直接从池子里取出该对象,并且通过引用计数的方式来共享,这样在系统存储了大量数值下,也能一定程度上节省内存并且提高性能

2.redis数据存储位置

我们知道redis是基于内存存储数据的,那么数据在掉电后会造成数据丢失,我们可以亦通过配置生成相关的日志文档以及将数据在磁盘进行备份。这样下次开机是可以保证数据仍然可以拿到。

3.redis数据库常用数据类型已经相关操作

过期时间设置常用操作

  1. EXPIRE 将key的生存时间设置为ttl秒
  2. PEXPIRE 将key的生成时间设置为ttl毫秒
  3. EXPIREAT 将key的过期时间设置为timestamp所代表的的秒数的时间戳
  4. PEXPIREAT 将key的过期时间设置为timestamp所代表的的毫秒数的时间戳

其实以上几种处理方式都是根据PEXPIREAT来实现的,设置生存时间的时候是redis内部计算好时间之后在内存处理的,最终的处理都会转向PEXPIREAT。 
1、2两种方式是设置一个过期的时间段,就是咱们处理验证码最常用的策略,设置三分钟或五分钟后失效,把分钟数转换成秒或毫秒存储到redis中。 
3、4两种方式是指定一个过期的时间 ,比如优惠券的过期时间是某年某月某日,只是单位不一样。

键命令(支持正则查找):
keys 参数
keys *: 查看所有键
keys 'a*': 查看名称包含a的键(正则查找)
exists key:查看键是否存在,存在返回1
type key:查看键的类型
del key1 key2 : 删除键以及对应的值
expire key seconds :设置过期时间
ttl key:查看键的有效时间(返回-2代表对应的键已经过期,返回-1代表键没有设置过期超时)
string类型数据的操作
1.set key value
2.设置过期时间:
setex key seconds value(eg: setex name 3 fenghua)
3.mset key1 value1 key2 value2
4.给键追加值
append key value
5.获取数据
get key
mget key1 key2


hash类型(key 代表对象,field代表属性)
保证key,value有效期的一致
1.hset key field value(设置key的属性为XX)
2.hmset key field1 value1 field2 value2
3.hkeys key(获取键的所有属性)
4.hget key field(eg:hget key field)
5.hget key field1 field2 field3
6.hvals key (获取某个键所有属性的值)
7.hdel key field1 field2(删除)


list类型(key代表列表名)
1.lpush key value1 value2...
2.lrange key 0 3  (0 3 代表下标,负数代表从尾部计数)
3.linsert key before/after 现有元素 新元素
4.lset key 下标 value (修改值)
右边类似
5.lrem key count value(count=0 代表移除所有,count<0代表从尾往头删除)



set(无序集合)类型(key代表集合名)
1.sadd key member1 member2
2.smembers key(获取集合key所有元素)
3.srem key member1删除集合某元素


zset(有序集合)
1.zadd key score1 member1 score2 member2(score代表权重)
2.zrange key start stop(eg:zrange a4 0 -1  获取a4集合的所有元素)
3.zrangebyscore key min max  获取键的权值在min 到max之间的成员
4.zscore key menmber 返回集合中元素member的权重
5.zrem key member1 member2
6.zremrangebyscore key min max  删除集合key中权重在min和max之间的元素

猜你喜欢

转载自blog.csdn.net/weixin_31449201/article/details/81735489