redis基本和命令
忙了很久一直没时间整理工作中的零零星星,现在把工作过程中的点点滴滴的笔记搬到博客上,以飨读者和自己;
0. redis基本路径 Selected config: Port : 6379 Config file : /etc/redis/6379.conf Log file : /var/log/redis_6379.log Data dir : /var/lib/redis/6379 Executable : /usr/local/bin/redis-server Cli Executable : /usr/local/bin/redis-cli Lua启动,选择加载配置项 服务端: #/usr/local/bin/redis-server /etc/redis/6379.conf 客户端: #/usr/local/bin/redis-cli Redis数据类型及操作: String: 指令:{ set setnx :如果key已经存在, 返回0 setex :指定键值对的有效期, setex [key] [expire] [value] /类似于:set [key] [value] [EX expire] setrange :设置key-value值的子字符串,下标从0开始到第i位置,不包含i mset msetnx get getset getrange mget incr incrby decr decrby append strlen } Hash:是一个string类型的field-value的映射表,它的添加删除平均都是O(1)的效率 指令:{ hset hsetnx hmset hget hmget hincrby hexists hlen hdel hkeys hvals hgetall } List:是一个链表结构, 主要功能是pop,push,获取一个范围的所有值等,key理解为链表的名字 list类型其实就是每一个子元素都是string类型的双向链表. 指令:{ lpush rpush linsert : linsert key [BEFORE|AFTER] [pivot] [value] 在list的特定的值的位置之前或之后添加字符串元素 lset : lset key [index] [value] 设置list中指定下标的元素值 lrem : lrem key [count] [value] 从list中删除count个和value相同的元素 count>0,从头删除; count=0,全部删除; count<0,从尾删除; ltrim : ltrim key [start] [stop] 保留key的值中指定范围内的数据 lpop : 从list的头部删除元素 rpop : 从list的尾部删除元素 rpoplpush : rpoplpush [source] [destination], 整个操作是原子的 从source的尾部移除元素,并添加到destination的头部,返回被移除的元素值 lindex : lindex key [index] 取list中index位置的元素 llen : 返回key对应list的长度 } Set: 指令:{} 键值指令: [ keys :返回给定pattern的所有key exists: 确认一个key是否存在 del : 删除一个key expire : 设置一个key的过期时间(秒为单位) ttl : 用于获取key的有效时长 persist : 移除给定key的过期时间 move : 把当前数据库中的key移动到其它库中 rename : 重命名key ] 服务指令: [ select :选择数据库存取, redis数据库编号从 0~15 默认16个库 dbsize :获取当前数据库的key info : 获取服务器的信息和统计,用于说明服务器的基础信息,包括版本启动时间等; config get: 获取服务器配置信息 flushdb : 删除当前选择数据库中的所有key flushall : 删除所有库中的所有key ] 主从复制基本配置: Redis主从复制中一个主服务可以有多个服务, 一个从服务可以有多个从服务; 对应配置,只需要修改redis.conf中的slaveof参数 #slaveof <masterip> <masterport> slaveof 127.0.0.1 6379 启动master #redis-server /usr/local/redis/conf/redis_6379.conf #redis-cli 启动slave(假设端口3689) #redis-server /usr/local/redis/conf/slave.conf #redis-cli -p 6389 如果master服务设置有密码,则需要配置masterauth参数 masterauth <master-password> 查看redis连接数 redis-cli info | grep connected 如果客户端的idle空闲时间太长,连接池维持了太多的连接,则需要把不用的连接及时释放掉; redis 127.0.0.1:6379> client list redis 127.0.0.1:6379> CONFIG SET timeout 30 Cluster集群配置 cluster-enabled yes 开启 每一个集群节点有一个集群配置文件;它不是手工创建的,是redis节点创建和更新的; 确保同一系统上运行的redis集群节点的配置文件名不重叠 1. redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件, 并且在此基础上实现了master-slave(主从)同步 2. pipeline 压缩请求数量 pipeline机制将多个命令汇聚到一个请求中,可以有效减少请求数量,减少网络延时。 3. script 压缩复杂请求 script核心思想是在redis命令里嵌入Lua脚本,来实现一些复杂操作。 4. cluster Redis 集群不像单机版本的 Redis 那样支持多个数据库,集群只有数据库 0,而且也不支持 SELECT 命令。