wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm rpm -ivh epel-release-7-5.noarch.rpm yum install redis systemctl start redis.service systemctl status redis.service systemctl enable redis.service
redis-cli
string类型 set name zouhuying get name 同一个建只允许用一次 setnx key存在则返回0,不存在就设置 setex 指定键值对对应的有效期 setex haircolor 10 red setrange 替换一部分字符串 zouhuiying/ setrange name 1 h /zhuhuiying mset 设置多个key的值 mset name zouhuiying age 18 mesetnx getset name haoning设置新值获取旧值 getrang name 0 3获取name的0-3个字符 mget 获取多个key的值 incr 递增值 incrby incrby age (+-)3(指定的数字增加减) decr decrby 递减 append append name hhh追加,返回新字符串的长度 strlen value的长度
hashes类型 hset hset myhash(表) field1(字段) Hello hsetnx setnx hmset hmget hincr hincrby hdecr hdecrby hexits 测试表中字段是否存在 hlen 表中字段的个数 hdel 删除表中某个字段 hmset user:001 age 66 height 178 hmget useer:001 age height hdel user:001 age hkeys 返回所以字段hkeys user:001 hvals hvals user:001 hgetall user:001 keys and values
list类型(双向链表 栈和队列) 栈:先进后出(存放值) 队列:先进先出 (从上到下) push pop lpush mylist zouhuiying(先进后出) rpush mylist ying(先进先出) lrange mylist 0 -1 linsert (插入元素) linsert mylist before "ying" "yingying" lset 替换指定下标的元素 lset mylist 0 "xiaoying" lrem 删除n个和value相同的值 返回删除值得个数 lrem mylist 1 "hello" 删除1个 n= 0:全部删除 n<0 :从尾部删除 ltrim:保留ltrim mylist 1 -1(保留的范围),其他删除 lpop 从头部删除元素 rpop 从尾部删除 rpoplpush (边取边加,可以是两个表) lindex: lindex mylist 0(下标为0的元素) llen:llen mylist (mylist的长度)
redis 常用命令
1.建值相关命令 keys * 返回所以建 keys 正则表达式 exists key检查key是否存在 del key expire key time 设置过期时间(key要存在) ttl key 查看建还有几秒过期 -1:表示已经过期 select (0-15)选择数据库 move key (0-15) persist:移除过期时间 randomkey随机返回一个key rename 重命名 type key :返回key的数据类型
2.服务器相关命令
ping (PONG,表示ping 通) echo 普通echo select quit/exit/control-c退出客户端 dbsize 当前数据库中的key的数量 info:返回相关信息 config get key 返回key的信息 flushdb 删除当前数据库下的所有key flushall 删除所有数据库下的所有key
redis的高级应用
安全性:redis.conf->requirepass mima 登陆redis-cli -a mima 或者redis-cli auth mima 主从复制:修改redis.conf ->增加slaveof 192.168.139.213 6379(主机IP和端口) and masterauth mima(主机redis密码)and bind 0.0.0.0 (telnet 检查从机能否访问主机的端口) 事务处理:multi 进去事务 所有的命令保存在queued中,并不执行。exec后再按照顺序执行命令 取消事务:discard取消所有命令 乐观锁:session1:set age 20/ watch age / multi/ set age 30/ exec(执行会失败) session2 set age 20 unwatch 清除监视 持久化机制:数据快照 redis.conf -> save 9000 1 快照存在/var/lib/redis/dump.rdb中,二进制文件无法查看 存储操作aof redis.conf ->appendonly yes->appendfsync always(最快,性能不好)/appendfsync everysec(每一秒0/appendfsync no(完全依赖os,性能最好,持久化没有保证)快照存在/var/lib/redis/dump.rdb 发布订阅信息:subscribe tv1 /publish tv1 zouhuiying(两个session) 虚拟内存的使用:更改配置文件vm-enabled