redis 学习笔记
一 搭建
1 下载安装,参考官方 $ wget http://download.redis.io/releases/redis-3.2.1.tar.gz $ tar xzf redis-3.2.1.tar.gz $ cd redis-3.2.1 $ make2 启动redis $ redis-server /etc/redis/redis.conf3 客户端 $ redis-cli (redis-cli -a password) $ ping4 关闭redis pkill redis5 修改配置 daemonize yes 后台运行 requirepass pass!! 添加密码 ...
二 数据类型,常用操作命令
1 string类型 set name hufeng get name setnx name hufeng0(如果name存在,返回0,不设置不更新),(nx = not exist) setex faceColor 10 red (指定键值有效期) setrange name 2 xiaoxin (从第2个字符替换字符串,不一定全覆盖,看哪个长度长) mset key1 val1 key2 val2 (一次设置多个key) msetnx key1 val1 key2 val2 (如果有一个存在,就不成功) getset name 100 (获取旧值,设置新值) getrange name 0 5 (获取0到5的子串) mget key1 key2 (批量返回) incr key1 (递增1) incrby key1 10 (递增10,key1不存在,默认为0,+加 -减) decr key1 (递减) decrby key1 10 (递减10,+减,-加) append name 100 (末尾追加字符串) strlen name (字符串长度)2 hash类型 hset user:1 name hufeng hset user:1 phone 18610256505 hget user:1 name hsetnx user:1 name zhangsan(存在的话,设置失败) hmset user:2 name hufeng phone 18610256505 hmget user:2 name phone hincrby user:2 phone 1(递增) hexists user:2 phone (检测字段是否存在) hlen user:2 (返回键数量) hdel user:2 phone(删除hash里指定field) hkeys user:2 (返回hash所有键名) hvals user:2 (返回hash所有值) hgetall user:2 (获取所有key val)3 list链表类型 lpush mylist 1 (从头部压入一个元素,先进后出) lpush mylist 2 lrange mylist 0 -1(代表从头取到尾) rpush list 1 (从尾部压入一个元素,先进先出) linsert list before 2 3 (在指定值前面插入一个元素) lset list 0 a (设置list中,指定下标的元素替换掉) lrem list 2 hello (从list中删除 2个与hello同值的元素,如果就1个hello就全部删除) ltrim list 1 2 (保留下标1到2,删除其他的) lpop list (从list头部删除元素) rpop list (从list尾部删除元素) rpoplpush list0 list1 (从list0尾部删除元素并压入到list1头部) lindex list 0 (获取list中下标为0的值) llen list (返回list中有几个元素)4 set 无序集合类型 sadd set ab (添加元素不能添加相同元素) smembers set (查看set里所有元素) srem set ab (删除set中元素) spop set (随机删除一个元素) sdiff set1 set2 (两个集合的差集,--》set1比set2多了什么) sdiffstore set3 set1 set2 (set1与set2的差集,存储到set3中) sinter set1 set2(两个集合的交集) sinterstore set3 set1 set2 (set1与set2的交集,存储到set3中) sunion set1 set2 (并集) sunion set3 set1 set2(set1与set2的并集,存储到set3中) smove set1 set2 ab (将set1中ab移动到set2中) scard set1 (查看set1中元素个数) simermber set1 ab (判断ab是否在set1集合当中) srandmember set1 (从set1中随机返回一个元素,不删除)5 zset有序集合类型 zadd set1 1 "one" (添加元素,并指定顺序) zrange set1 0 -1 withscores(获取索引0到-1的数据-》默认从小到大排列,withscores显示顺序号) zrevrange set1 0 -1 withscores(获取索引0到-1的数据-》默认从大到小排列,withscores显示顺序号) zrangebyscore set1 2 4 withscores (获取score 2到4的数据) zrem set1 one (删除set1中元素) zincrby set1 2 one (one的顺序号加2) zrank set1 one (返回set1中one的索引值-》默认从小到大排列,不是scores) zrevrank set1 one (返回set1中one的索引值-》默认从大到小排列,不是scores) zcount set1 2 5 (返回score 2到5的数量) zcard set1 (返回set1中元素个数) zremrangebyrank set1 1 2 (删除set1中索引1到2的元素) zremrangebyscore set 1 2 (删除set1中score 1到2的元素)
三 redis常用命令
1 键值相关命令 keys s* (所有s开头键,*匹配) exists age (确认key是否存在) del age (删除age键) expire age 10 (设置age过期时间 秒) ttl age (查看还剩多长时间过期) persist age (取消age的过期时间) randomkey (随机返回数据库一个key) rename set1 set2 (重命名set1为set2) type set1 (查看set1数据类型)2 服务器相关命令 ping (返回PONG,代表LIVE) select 1 (选择数据库redis数据库编号从0-15,默认0) dbsize (返回当前数据库中key的数目) info (redis服务器相关信息) config get * (获取config信息) flushdb (清空当前数据库) flushall(清空所有数据库)
四 Redis高级应用
1 安全性 设置个复杂的密码,配置文件:requirepass pass2!! 重启后进入 redis-cli -a pass2!!2 主从复制 slave配置文件加入如下配置 slaveof 192.168.1.10 6379 # 指定master的ip和端口 masterauth pass2!! # master的密码 保存后重启3 事务处理(不会回滚) 1 multi 开启事务 2 set age 10 操作 3 exec 提交事务 4 discard 取消事务4 乐观锁 watch age (监控age如果被修改,将执行不成功) multi set age 10 exec5 持久化机制 两种方式 1 快照模式 默认 save 900 1 # 900秒内如果1个key被修改,就保存 2 aof模式,更安全 appendonly yes appendfsync always //收到命令立即写 IO高 appendfsync everysec //每秒写一次 appendfsync no //依赖OS,性能好,持久化没保证6 发布订阅信息 subscribe tv1 (监听频道tv1) publish tv1 messagesssss7 虚拟内存的使用 really-use-vm yes vm-enabled yes # 开启VM vm-swap-file /tmp/redis.swap # 保存文件路径 vm-max-memory 100000 # redis最大内存上限 vm-page-size 32 # 每个页面的大小32字节 vm-page 134217728 # 最多使用多少页面 vm-max-threads 4 # 工作线程数
五 PHP-REDIS使用
安装php redis扩展 http://redis.io/clients# php (推荐phpredis)
关键字:redis
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!