Redis学习了解(一)

Reids:

Redis:REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行 并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

特点:

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份

单进程:

Redis:单进程模型来处理客户端的请求。对读写等事件的响应 是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率.

Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本, 它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

数据类型:

String(字符串)

  • string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
  • string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
  • string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M*

Hash(哈希,类似java里的Map)

  • Redis hash 是一个键值对集合。
  • Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
  • 类似Java里面的Map<String,Object>

List(列表)

  • Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
  • 它的底层实际是个链表

Set(集合)

  • Redis的Set是string类型的无序集合。它是通过HashTable实现实现的

Zset(sorted set:有序集合)

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

key的常用

DEL key:该命令用于在 key 存在时删除 key。

DUMP key:序列化给定 key ,并返回被序列化的值。

EXISTS key :检查给定 key 是否存在。

EXPIRE key seconds:为给定 key 设置过期时间,以秒计。

EXPIREAT key timestamp:EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。

PEXPIRE key milliseconds:设置 key 的过期时间以毫秒计。

PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计

KEYS pattern:查找所有符合给定模式( pattern)的 key 。

MOVE key db:将当前数据库的 key 移动到给定的数据库 db 当中。

PERSIST key:移除 key 的过期时间,key 将持久保持。

PTTL key:以毫秒为单位返回 key 的剩余的过期时间。

TTL key:以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

RANDOMKEY:从当前数据库中随机返回一个 key 。

RENAME key newkey:修改 key 的名称

RENAMENX key newkey:仅当 newkey 不存在时,将 key 改名为 newkey 。

SCAN cursor MATCH pattern:迭代数据库中的数据库键。

TYPE key:返回 key 所储存的值的类型。

####配置文件conf

常规:

vi redis.conf

daemonize yes #是否以后台进程运行

pidfile /var/run/redis/redis-server.pid #pid文件位置

port 6379#监听端口

bind 127.0.0.1 #绑定地址,如外网需要连接,设置0.0.0.0

timeout 300 #连接超时时间,单位秒

loglevel notice #日志级别,分别有:debug.info.warn.error

logfile /var/log/redis/redis-server.log #日志文件位置

syslog-enabled no #是否将日志输出到系统日志

databases 16#设置数据库数量,默认数据库为0

######### 快照方式

save 900 1 #在900s(15m)之后,至少有1个key发生变化,则快照

save 300 10 #在300s(5m)之后,至少有10个key发生变化,则快照

save 60 10000 #在60s(1m)之后,至少有1000个key发生变化,则快照

rdbcompression yes #dump时是否压缩数据

dir /var/lib/redis #数据库(dump.rdb)文件存放目录

######### 主从复制

slaveof #主从复制使用,用于本机redis作为slave去连接主redis

masterauth #当master设置密码认证,slave用此选项指定master认证密码

slave-serve-stale-data yes #当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress"错误信息。但INFO和SLAVEOF命令除外。

######### 安全

requirepass foobared #配置redis连接认证密码

######### 限制

maxclients 128#设置最大连接数,0为不限制

maxmemory #内存清理策略,如果达到此值,将采取以下动作:

  • volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
  • allkeys-lru :删除不经常使用的key
  • volatile-random :随机删除即将过期的key
  • allkeys-random :随机删除一个key
  • volatile-ttl :删除即将过期的key
  • noeviction :不过期,写操作返回报错
  • maxmemory-policy volatile-lru#如果达到maxmemory值,采用此策略
  • maxmemory-samples 3 #默认随机选择3个key,从中淘汰最不经常用的

######### 附加模式

appendonly no #AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘

appendfilename appendonly.aof #指定更新日志文件名

AOF持久化三种同步策略:

  • appendfsync always #每次有数据发生变化时都会写入appendonly.aof
  • appendfsync everysec #默认方式,每秒同步一次到appendonly.aof
  • appendfsync no #不同步,数据不会持久化
  • no-appendfsync-on-rewrite no #当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。

######### 虚拟内存

vm-enabled no #是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存

vm-swap-file /var/lib/redis/redis.swap #虚拟内存文件位置

vm-max-memory 0 #redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能

vm-page-size 32 #每个页面的大小为32字节

vm-pages 134217728 #设置swap文件中页面数量

vm-max-threads 4 #访问swap文件的线程数

######### 高级配置

hash-max-zipmap-entries 512 #哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间

hash-max-zipmap-value 64 #哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间

list-max-ziplist-entries 512 #list数据类型多少节点以下会采用去指针的紧凑存储格式

list-max-ziplist-value 64 #list数据类型节点值大小小于多少字节会采用紧凑存储格式

set-max-intset-entries 512 #set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储

activerehashing yes #是否激活重置哈希

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值