网站建设的岗位名称,余姚做网站62752762,增长超人网站建设价格,娄底网站设计redis是一种非关系型数据存储工具#xff0c;这区别于传统的关系型数据库(像MySQL等)#xff0c;类似于memcache#xff0c;并且其内部集成了对list(链表)、set(集合)的操作#xff0c;可以很方便快速的处理数据(像插入、删除list取交集 并集 差集等)#xff0c;这极大的减…redis是一种非关系型数据存储工具这区别于传统的关系型数据库(像MySQL等)类似于memcache并且其内部集成了对list(链表)、set(集合)的操作可以很方便快速的处理数据(像插入、删除list取交集 并集 差集等)这极大的减轻了底层数据库的压力并且给用户更快的响应速度。 redis的优点支持主从备份操作指令丰富支持异步的数据持久化 一丶使用 将 redis 安装到 /usr/local/webserver/redis 1.下载安装包 wget http://redis.googlecode.com/files/redis-2.2.15.tar.gztar zxvf redis-2.2.15.tar.gzcd redis-2.2.15makemkdir -p /usr/local/webserver/redis/confmkdir -p /usr/local/webserver/redis/runmkdir -p /usr/local/webserver/redis/dbcp redis.conf /usr/local/webserver/redis/conf/cd src2.将 src 目录下所有可执行文件复制到安装目录cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server mkreleasehdr.sh/usr/local/webserver/redis/3.修改配置文件 ------- vi /usr/local/webserver/redis/conf/redis.conf --------daemonize yes --yes启用守护进程pidfile /usr/local/webserver/redis/run/redis.pid --Redis以守护进程方式运行时把pid写入文件dir /usr/local/webserver/redis/db --数据存放的目录--------------------------------------------------------------4.创建启动和停止服务脚本------- vi /usr/local/webserver/redis/start.sh ---------#!/bin/bash/usr/local/webserver/redis/redis-server /usr/local/webserver/redis/conf/redis.conf------- vi /usr/local/webserver/redis/stop.sh ---------#!/bin/bashkill cat /usr/local/webserver/redis/run/redis.pidchmod ax /usr/local/webserver/redis/start.sh /usr/local/webserver/redis/stop.sh5.启动 redis 服务 /usr/local/webserver/redis/start.sh验证证服务是否成功:netstat -nlpt | grep 63796.启动客户端验证/usr/local/webserver/redis/redis-cliset key1 val1get key1二. M/S主从集群配置 1台Master和一台SlaveMaster IP:127.0.0.1 PORT:6379Slave1 IP:127.0.0.1 PORT:637912.复制slave目录方便管理 cp -r /usr/local/webserver/redis /usr/local/webserver/redis-slave13.修改slave的配置文件和服务脚本-- vi /usr/local/webserver/redis-slave1/conf/redis.conf --port 63791pidfile /usr/local/webserver/redis-slave1/run/redis.piddir /usr/local/webserver/redis-slave1/dbslaveof 127.0.0.1 6379------------------------------------------------------------ vi /usr/local/webserver/redis-slave1/start.sh --#!/bin/bash/usr/local/webserver/redis-slave1/redis-server /usr/local/webserver/redis-slave1/conf/redis.conf---------------------------------------------------------- vi /usr/local/webserver/redis-slave1/stop.sh ---------#!/bin/bashkill cat /usr/local/webserver/redis-slave1/run/redis.pid--------------------------------------------------------4.启动M/S服务/usr/local/webserver/redis/start.sh/usr/local/webserver/redis-slave1/start.sh验证服务是否正常netstat -nlpt | grep redis-server5.验证redis是否有效/usr/local/webserver/redis/redis-cli [默认连接端口:6379 的 Master服务]set key1 val1quit /usr/local/webserver/redis/redis-cli -p 63791 [连接 Slave1 服务]get key1“val1″ (数据成功同步了)多个slave同理配置 三丶介绍 1. 服务说明 redis-server.exe 服务程序 redis.conf redis配置文件 redis-cli.exe 命令行客户端测试用 redis-check-dump.exe 本地数据库检查 redis-check-aof.exe 更新日志检查 redis-benchmark.exe 性能测试用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache的 ab 工具) 1. Redis默认不是以守护进程的方式运行可以通过该配置项修改使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时Redis默认会把pid写入/var/run/redis.pid文件可以通过pidfile指定 pidfile /var/run/redis.pid 3. 指定Redis监听端口默认端口为6379作者在自己的一篇博文中解释了为什么选用6379作为默认端口因为6379在手机按键上MERZ对应的号码而MERZ取自意大利歌女Alessia Merz的名字 port 6379 4. 绑定的主机地址 bind 127.0.0.1 5.当 客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能 timeout 300 6. 指定日志记录级别Redis总共支持四个级别debug、verbose、notice、warning默认为verbose loglevel verbose 7. 日志记录方式默认为标准输出如果配置Redis为守护进程方式运行而这里又配置为日志记录方式为标准输出则日志将会发送给/dev/null logfile stdout 8. 设置数据库的数量默认数据库为0可以使用SELECT dbid命令在连接上指定数据库id databases 16 9. 指定在多长时间内有多少次更新操作就将数据同步到数据文件可以多个条件配合 save seconds changes Redis默认配置文件中提供了三个条件 save 900 1 save 300 10 save 60 10000 分别表示900秒15分钟内有1个更改300秒5分钟内有10个更改以及60秒内有10000个更改。 10. 指定存储至本地数据库时是否压缩数据默认为yesRedis采用LZF压缩如果为了节省CPU时间可以关闭该选项但会导致数据库文件变的巨大 rdbcompression yes 11. 指定本地数据库文件名默认值为dump.rdb dbfilename dump.rdb 12. 指定本地数据库存放目录 dir ./ 13. 设置当本机为slav服务时设置master服务的IP地址及端口在Redis启动时它会自动从master进行数据同步 slaveof masterip masterport 14. 当master服务设置了密码保护时slav服务连接master的密码 masterauth master-password 15. 设置Redis连接密码如果配置了连接密码客户端在连接Redis时需要通过AUTH password命令提供密码默认关闭 requirepass foobared 16. 设置同一时间最大客户端连接数默认无限制Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数如果设置 maxclients 0表示不作限制。当客户端连接数到达限制时Redis会关闭新的连接并向客户端返回max number of clients reached错误信息 maxclients 128 17. 指定Redis最大内存限制Redis在启动时会把数据加载到内存中达到最大内存后Redis会先尝试清除已到期或即将到期的Key当此方法处理 后仍然到达最大内存设置将无法再进行写入操作但仍然可以进行读取操作。Redis新的vm机制会把Key存放内存Value会存放在swap区 maxmemory bytes 18. 指定是否在每次更新操作后进行日志记录Redis在默认情况下是异步的把数据写入磁盘如果不开启可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的所以有的数据会在一段时间内只存在于内存中。默认为no appendonly no 19. 指定更新日志文件名默认为appendonly.aof appendfilename appendonly.aof 20. 指定更新日志条件共有3个可选值 no表示等操作系统进行数据缓存同步到磁盘快 always表示每次更新操作后手动调用fsync()将数据写到磁盘慢安全 everysec表示每秒同步一次折衷默认值 appendfsync everysec 21. 指定是否启用虚拟内存机制默认值为no简单的介绍一下VM机制将数据分页存放由Redis将访问量较少的页即冷数据swap到磁盘上访问多的页面由磁盘自动换出到内存中在后面的文章我会仔细分析Redis的VM机制 vm-enabled no 22. 虚拟内存文件路径默认值为/tmp/redis.swap不可多个Redis实例共享 vm-swap-file /tmp/redis.swap 23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0 vm-max-memory 0 24. Redis swap文件分成了很多的page一个对象可以保存在多个page上面但一个page上不能被多个对象共享vm-page-size是要根据存储的 数据大小来设定的作者建议如果存储很多小对象page大小最好设置为32或者64bytes如果存储很大大对象则可以使用更大的page如果不 确定就使用默认值 vm-page-size 32 25. 设置swap文件中的page数量由于页表一种表示页面空闲或使用的bitmap是在放在内存中的在磁盘上每8个pages将消耗1byte的内存。 vm-pages 134217728 26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的可能会造成比较长时间的延迟。默认值为4 vm-max-threads 4 27. 设置在向客户端应答时是否把较小的包合并为一个包发送默认为开启 glueoutputbuf yes 28. 指定在超过一定的数量或者最大的元素超过某一临界值时采用一种特殊的哈希算法 hash-max-zipmap-entries 64 hash-max-zipmap-value 512 29. 指定是否激活重置哈希默认为开启后面在介绍Redis的哈希算法时具体介绍 activerehashing yes 30. 指定包含其它的配置文件可以在同一主机上多个Redis实例之间使用同一份配置文件而同时各个实例又拥有自己的特定配置文件 include /path/to/local.conf 3.工具 对集合写入测试 100000 requests completed in 2.38 seconds100000个请求在2.38秒内完成 60 parallel clients每次请求有60个并发客户端 3 bytes payload每次写入3个字节的数据 keep alive: 1保持一个连接一台服务器来处理这些请求所有请求在62毫秒内完成42105.26 requests per second每秒处理42105.26次请求连接控制QUIT 关闭连接AUTH (仅限启用时)简单的密码验证 适合全体类型的命令EXISTS key判断一个键是否存在;存在返回 1;否则返回0;DEL key删除某个key,或是一系列key;DEL key1 key2 key3 key4TYPE key 返回某个key元素的数据类型( none:不存在,string:字符,list,set,zset,hash)KEYS pattern 返回匹配的key列表(KEYS foo*:查找foo开头的keys)RANDOMKEY随机获得一个已经存在的key如果当前数据库为空则返回空字符串RENAME oldnamenewname更改key的名字新键如果存在将被覆盖RENAMENX oldnamenewname 更改key的名字如果名字存在则更改失败DBSIZE返回当前数据库的key的总数EXPIRE设置某个key的过期时间秒,(EXPIRE bruce1000设置bruce这个key1000秒后系统自动删除)注意如果在还没有过期的时候对值进行了改变那么那个值会被清除。TTL查找某个key还有多长时间过期,返回时间秒SELECT index选择数据库MOVE key dbindex将指定键从当前数据库移到目标数据库 dbindex。成功返回1;否则返回0源数据库不存在key或目标数据库已存在同名key;FLUSHDB清空当前数据库中的所有键FLUSHALL清空所有数据库中的所有键 处理字符串的命令SET key value给一个键设置字符串值。SET keyname datalength data (SET bruce 10paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库)data最大不可超过1G。GET key获取某个key的value值。如key不存在则返回字符串“nil”如key的值不为字符串类型则返回一个错误。GETSET keyvalue可以理解成获得的key的值然后SET这个值更加方便的操作 (SET bruce 10paitoubing,这个时候需要修改bruce变成1234567890并获取这个以前的数据paitoubing,GETSETbruce 10 1234567890)MGET key1 key2 … keyN一次性返回多个键的值SETNX key valueSETNX与SET的区别是SET可以创建与更新key的value而SETNX是如果key不存在则创建key与value数据MSET key1 value1 key2value2 … keyN valueN 在一次原子操作下一次性设置多个键和值MSETNX key1 value1 key2value2 … keyN valueN在一次原子操作下一次性设置多个键和值目标键不存在情况下如果有一个以上的key已存在则失败INCR key 自增键值INCRBY key integer令键值自增指定数值DECR key 自减键值DECRBY key integer令键值自减指定数值 处理 lists 的命令RPUSH key value 从 List尾部添加一个元素如序列不存在则先创建如已存在同名Key而非序列则返回错误LPUSH key value 从 List头部添加一个元素LLEN key 返回一个 List的长度LRANGE key startend从自定的范围内返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)LTRIM key startend修剪某个范围之外的数据 (LTRIM testlist 0 2;保留0 1 2元素其余的删除)LINDEX keyindex返回某个位置的序列值(LINDEX testlist 0;返回序列testlist位置为0的元素)LSET key indexvalue更新某个位置元素的值LREM key count value 从List的头部count正数或尾部count负数删除一定数量count匹配value的元素返回删除的元素数量。LPOP key 弹出 List的第一个元素RPOP key 弹出 List的最后一个元素RPOPLPUSH srckey dstkey弹出 _srckey_ 中最后一个元素并将其压入 _dstkey_头部key不存在或序列为空则返回“nil” 处理集合(sets)的命令有索引无序序列SADD keymember增加元素到SETS序列,如果元素membe不存在则添加成功 1否则失败 0;(SADD testlist 3 \none)SREM key member删除SETS序列的某个元素如果元素不存在则失败0否则成功 1(SREM testlist 3 \N one)SPOP key从集合中随机弹出一个成员SMOVE srckey dstkeymember 把一个SETS序列的某个元素 移动到 另外一个SETS序列 (SMOVE testlist test 3\ntwo;从序列testlist移动元素two到 test中testlist中将不存在two元素)SCARD key统计某个SETS的序列的元素数量SISMEMBER key member获知指定成员是否存在于集合中SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集SINTERSTORE dstkey key1key2 … keyN 将 key1, key2, …, keyN 中的交集存入 dstkeySUNION key1 key2 … keyN返回 key1, key2, …, keyN 的并集SUNIONSTORE dstkey key1key2 … keyN 将 key1, key2, …, keyN 的并集存入 dstkeySDIFF key1 key2 … keyN依据 key2, …, keyN 求 key1 的差集。官方例子key1 x,a,b,ckey2 ckey3 a,dSDIFF key1,key2,key3 x,bSDIFFSTORE dstkey key1key2 … keyN 依据 key2, …, keyN 求 key1 的差集并存入 dstkeySMEMBERS key返回某个序列的所有元素SRANDMEMBER key随机返回某个序列的元素 处理有序集合(sorted sets)的命令 (zsets)ZADD key score member添加指定成员到有序集合中如果目标存在则更新score分值排序用ZREM key member从有序集合删除指定成员ZINCRBY key incrementmember 如果成员存在则将其增加_increment_否则将设置一个score为_increment_的成员ZRANGE key start end返回升序排序后的指定范围的成员ZREVRANGE key start end返回降序排序后的指定范围的成员ZRANGEBYSCORE key minmax 返回所有符合score min和score max的成员 ZCARD key 返回有序集合的元素数量 ZSCORE key element 返回指定成员的SCORE值ZREMRANGEBYSCORE key min max 删除符合 score min 和score max 条件的所有成员 排序List, Set, Sorted SetSORT key BY patternLIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或List SORT mylist DESC SORT mylist LIMIT 0 10ALPHA DESC按首字符排序 SORT mylist BY weight_*STORE resultkey将返回的结果存放于resultkey序列List 持久控制SAVE 同步保存数据到磁盘BGSAVE 异步保存数据到磁盘LASTSAVE返回上次成功保存到磁盘的Unix时间戳SHUTDOWN 同步保存到服务器并关闭Redis 服务器SAVEQUITBGREWRITEAOF当日志文件过长时重写日志文件 远程控制命令INFO提供服务器的信息和统计信息MONITOR实时输出所有收到的请求SLAVEOF 修改复制选项转载于:https://www.cnblogs.com/yechanglv/p/6941888.html