redis学习笔记

来源:互联网 发布:霍先生家的安之知全集 编辑:程序博客网 时间:2024/06/06 02:58

初学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对象的工作线程数量


0 0
原创粉丝点击