初学redis,笔记整理。
Strings类型操作
Set key value //设置 再次设置 set key value2 则会覆盖,
如果不想其被覆盖 则用:setnx key value 。//setnx 会判断是否存在键。
Setex key 10 value //设置key 的值,并设置其10秒的生命期,10秒后失效
Setrange key 6 newvalue //设置key的第五个字符开始替换成newvalue
Mset key1 value1 key2 value2 key3 value3 … …//批量设置
Msetnx key1 value1 key2 value2 key3 value3 … …//批量设置并判断是否存在键,一个设置不成功,其余都设置不成功。
Get key //获取
Getset key value //设置key新值为value,并返回旧值
Getrange key 0 6 //获取key子集
Mget key1 key2 key3 //批量获取
Incr key //返回key的自增1后的值
Incrby key 6 //返回key自增6后的值,如果key不存在会创建并赋值0,再自增6。值可以为负数,则自减。
Decr key //返回key的自减1后的值
Decrby key 6//返回自减6后的值,如果key不存在会创建并赋值0,再自减。
Append key value //返回key追加value后的长度
Strlen key //返回key的值的长度
Hashes类型
Hset myhashfield value //设置
Hget myhashfield //获取
Hsetnx myhashfield value //会判断是否已经设置
Hmset myhashfield1 value1 field2 value2 //批量设置
Hmget myhashfield1 field2 //批量获取
Hincrby myhashfield1 6 //自增1
Hexists myhashfield //判断myhash 中field是否存在,返回1或者0
Hlen myhash //返回myhash字段数量
Hdel myhashfield //删除myhash中的field字段
Hkeys myhash //返回myhash中所有的字段
Hvals myhash //返回myhash中所有值
Hgetall myhash//返回myhash中的所有键值对
Lists类型
栈先进后出
队列先进先出
Lpush mylist “value”//头部压入,返回mylist的个数
Lrange mylist 0-1 //从头到尾取出
Rpush mylist “value”//尾部压入,返回mylist的个数
Linsert mylistbefore “value” “value1” //在value前压入一个value1
Lset mylist 0 “value”//指定下标为0的元素替换成value
Lrem mylist 1 “value”//从mylis中删除1个value相同的元素,返回删除掉的个数。
Ltrim mylist 1 2//保留下标1到2的,包括1和2。两端的将删除。
Lpop mylist //删除mylist的头部的元素删除,返回删除的value。
Rpop mylist //删除mylist的尾部元素删除,返回删除的value.
Rpoplpushmylist1 mylist2 //弹出mylist1尾部并压入mylist2的头部中去。
Lindex mylist 0 返回mylist中下标0位置的value
Llen mylist 返回mylist的长度
Sets类型
是string类型的无序集合
Sadd myset “value”//添加到集合(myset)元素value,返回0或1。
Smembers myset//返回集合中的元素列表
Srem myset “value”//删除集合myset中的value元素,返回0或1。
Spop myset //随机弹出,返回被弹出的元素value。
Sdiff myset1myset2 //返回两个集合的差集,以myset1为标准。
Sdiffstoremyset3 myset1 myset2 //把myset2和myset3的差集存到myset3中。
Sinter myset1myset2 //返回两个集合的交集。
Sinterstoremyset3 myset1 myset2 //存储myset1和myset2的交集到myset3。
Sunion myset1myset2//返回连个集合的并集
Sunionstoremyset3 myset1 myset2//存储myset1和myset2的并集到myset3。
Smove myset1myset2 “value” //从集合myset1中剪切value到myset2中。Myset2可以为空。
Scard myset //返回集合元素个数
Sismember myset “value”//判断某个元素是否是集合的元素
Srandmembermyset //随机取出集合中的某个元素
Sorted sets类型,有序的集合,是set的升级版本,增加了顺序属性。命令都是z开头。
Zadd myzset 1 “value”//插入,如果插入相同的,其顺序会变成新的插入。
Zrange myzset 0-1 withscores//伴随顺序号输出
Zrem myzset “value”//删除value
Zincrby myzset 2“value” //使myzset的value的顺序值增加2,如果value不存在,则新增,且其顺序号为2。
Zranke myset “value”//返回value在myset的withscores(小到大)排序下的索引值。
Zrevrank myset “value” //返回value在myset的withscores(大到小)排序下的索引值
Zrevrange myset0 -1 withscores //降序排序
Zrangebyscoremyset 2 3 withscores//返回序号2到3元素,不是索引。
Zcount myset 2 3//返回给定区间的数量。
Zcard myset//返回集合中的所有元素数量。
Zremrangebyrankmyset 1 1//序号升序排序下删除索引1到1就是1的元素。
Zremrangebyscoremyset 1 2 //序号升序排序下删除序号1到2的元素。
REDIS常用命令:键值命令 和服务器命令
键值命令:
Keys * //返回redis中所有key ,可以模糊匹配 keys k* ,代表匹配k开头
Exists key //判断是否存在key
Del key //删除某个key
Expire key 10 //设置现有的key键设置生命时间
Ttl key //查看key 的生命时间
Move key 1//移动当前数据库中的key到1数据库
Persist key //取消生命定时
Randomkey //随机返回当前数据库中的一个key
Rename keynewkeyvalue //重命名key
Type key//返回key的类型
服务器命令
Ping //pingredis服务是否连接成功 成功返回PONG
Echo xxx//打印xxx
Select 0 //选择当前数据库 数据库个数16 0到15
Quit //退出连接
Dbsize //返回数据库的key个数
Info //返回数据库相关信息
Config get * //返回数据库所有配置信息
Config get xxx//返回xxx配置项的名称和值
Flushdb //删除当前数据库所有key
Flushall //删除所有数据库所有key
Redis高级应用
1. 安全性
//在配置中修改配置,设置密码requirepass password 重启服务
授权方式:两种授权方式1 登陆授权 进入的时候 redis-cli –apassword 2 auth password
2. 主从复制
特点:master可以连接多个slave等
配置slave
在配置文件中
Slaveof 192.168.1.163 6379
masterauth password
判断是主是从?info命令下的role角色值。
3. 事务处理
Multi// 让事务打开上下文
Exex//让队列中的命令依次执行
Discard //在事务中想取消执行队列中的命令,也就是让事务回滚
其中事务队列中某个执行错误,其他执行成功,最后不会回滚。
Watch key //监控key,如果版本锁不同,事务队列最后exec执行key发生变化将执行不成功。
Unwatch exec discard都会清楚所有的监视。
4. 持久化机制,需要将内存中的数据同步到硬盘来保证持久化
第一种:快照方式,二进制文件,默认文件名为dump.rdb
示例,在配置中:save 90010 //900秒了超过10个key 则自动备份
第二种:在一种是一定时间内执行快照,服务器宕掉则会丢失最后时间段的数据,所以需启用aof持久化方式,把操作命令保存下来,在配置中打开
Appendonly yes //启用持久化方式
Appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证安全的持久化
Appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
Appendfsnys no //完全依赖os,性能最好,持久化没保证。
5. 发布订阅消息
Publish tv1 message //向tv1频道发送信息
Subscribe tv1 //监听订阅tv1频道
6. 虚拟内存的使用
把暂时不经常访问的数据从内存交换到磁盘中,腾出内存空间。
需要在配置中:
Vm-enabled yes //开启vm功能
Vm-swap-file /tmp/reds.swap//交换出来的value保存的文件路径
Vm-max-memory 1000000 //redis使用最大内存上限
Vm-page-size 32 //每个页面的大小32字节
Vm-pages 13421728 //最多使用多少页面
Vm-max-threads 4 //执行value对象的工作线程数量