redis五种类型及常用命令

redis提供五种数据类型:
    string 字符串类型
        是二进制安全的,可以保存任何数据,包括图片和序列号对象
        set get setnx ttl setrange mset msetnx getset
        getrange  mget  incr  incrby  decr  decrby
    hash    散列类型
        hmset hmget  同时设置一个hash表的多个field
        hset  hget   设置一个hash表的一个field
        hincrby  hexists hlen hdel hkeys hvals 
        hgetall

list    列表类型
    lpush 在对应的list的头部添加字符串元素
        lpush和lrange是先写入的后读出
        rpush和lrange是先写入的先读出
            0代表从头部开始第一个元素
            -1代表从尾部开始第一个元素
            0  -1 代表list链表中所有的数据
            127.0.0.1:6379[2]> lpush list world
            (integer) 1
            127.0.0.1:6379[2]> lpush list hello
            (integer) 2
            127.0.0.1:6379[2]> lrange list 0 -1
            1) "hello"
            2) "world"
    rpush 在key对应的list的尾部添加字符串
    linsert 在key对应的list的特定位置前后添加字符串
    lset  修改list中指定下标的元素值
    lrem  从key中对应list中删除n个“指定值"的元素
    ltrim 保留指定的key的值范围内的数据
    lpop  从list的头部删除元素,并返回删除元素
    rpop  从list的尾部删除元素,并返回删除元素
    rpoplpush 将第一个list1尾部的元素添加到第二个list的头部
        #rpoplpush list1 list2
        也就是rpop出list1的尾部元素,lpush到list2的头部
    lindex  获取队列中指定下标元素的值
    llen  获取队列的长度

set     集合类型
    sadd 添加一个或多个元素到集合中
        127.0.0.1:6379[2]> sadd set1 2 3 4
    smembers  获取集合里面所有的元素
        127.0.0.1:6379[2]> smembers set1
    srem 从集合中删除指定的一个或多个元素
        127.0.0.1:6379[2]> srem set1 2 3
    spop 随机从集合中删除一个元素并返回
        127.0.0.1:6379[2]> spop set1
    srandmember 随机返回集合中一个元素,但不删除
        127.0.0.1:6379[2]> srandmember set1
    scard 获取集合里面的元素个数
        127.0.0.1:6379[2]> scard set1
    sismember 确定一个值是否是集合中的元素
        127.0.0.1:6379[2]> sismember set1 5
    sdiff 返回集合1和集合2的差集,以集合1为主
        也就是集合1减去两个集合的共同值
    sdiffstore diff set1 set2
        也就是将命令sdiff set1 set2的值存入diff中
    sinter 获取两个集合的交集
    sinterstore ss set1 set2
        将命令sinter set1 set2的结果保存到ss中
    sunion 获取两个集合的并集
    sunionstore store set1 set2 
        将命令sunion set1 set2 的结果保存到store中
    smove 将指定的值从源集合移动到目标集合

zset    有序集合类型
    zadd 向一个指定的有序集合内添加元素
    127.0.0.1:6379[2]> zadd zset1 1 one 2 two
        向zset1中添加两个值
    127.0.0.1:6379[2]> zrange zset1 0 -1
        获取zset1中的所有值
    127.0.0.1:6379[2]> zrange zset1 0 -1 withscores
        获取zset1中的值,并按分数从小到大排序
    127.0.0.1:6379[2]> zrevrange zset1 0 -1 withscores
        反向排序,获取zset1中的值,并按分数从大到小排序
    127.0.0.1:6379[2]> zrangebyscore zset1 2 3 withscores
        获取zset1中的分数在2和3之内的值
    127.0.0.1:6379[2]> zrem zset1 three
        获取zset1中的three的数据
    zincrby 给有序集合中指定值得成员的分数加上增量值
        zincrby zset1 2 xiaoxiao 给xiaoxiao的分数加2
    zrank 返回有序集合中指定值得下标。值按score从小到大排序
        zrank zset1 xiaoxiao
    zrevrank 反向排序,返回有序集合中指定值下标,值按score从大到小排序
        zrevrank zset1 xiaoxiao
    zcount 返回有序集合中,score值在起始分数与截止分数之间的个数
        zcount zset1 60 100  返回分数在60到100的有几个
    zcard 返回有序集合元素的个数
        zcard zset1 返回zset1中有几个元素
    zremrangebyrank 删除有序集合中,下标在指定区间的元素
        zremrangebyrank zset1 0 2  删除下标在0和2之间的元素
    zremrangebyscore 删除有序集合中,分数在指定区间的元素
        zremrangebyscore zset1 0 60 withscores 删除分数在60以下的元素
    zinterstore 取集合1和集合2的交集,并将结果保存在新集合中,在计算交集前,
        需要指定计算交集的集合的个数。交集中,值得分数是多个集合中分数的总和
        zinterstore zset1 3 zset1 zset2
    zunionstore  与zinterstore类似,只不过取两个集合的交集,分数取多个集合中分数总和

存储值:
127.0.0.1:7002> set name lamp   设置name的值为lamp
127.0.0.1:7001> get name        获取键name的值
127.0.0.1:7001> setnx name alex 设置未存在的键name的值
(integer) 0     返回0表示name键已经存在,不会重新赋值
127.0.0.1:7001> setex age 10 60 设置age的值为60,有效期为10秒
127.0.0.1:7000> ttl age         查看age的剩余的生存时间
    返回-2表示此key不存在
    返回-1表示此key没有设置剩余生存时间
    否则返回的就是以秒为单位的剩余生存时间
127.0.0.1:7000> set mail 123456789@qq.com  设置mail的值
OK
127.0.0.1:7000> setrange mail  9  @163.com  将mail的值从第9各开始替换为@163.com
(integer) 17    返回mail共有多少个字符
127.0.0.1:7000> get mail    获取mail的值
"123456789@163.com"
127.0.0.1:7000> mset key1 lamp1 key2 lamp2  一次设置多个键值对
    返回ok表示所有的值都已经设置,返回0表示没有任何值被设置
127.0.0.1:7001> getset name lamp  设置name的值并返回旧值
127.0.0.1:7001> getrange name 0 2 返回name的下标从0到2的子字符串
127.0.0.1:7001> mget key1 key2     mget一次获取多个值,对于key不存在返回nil
127.0.0.1:7001> set key1 10
OK
127.0.0.1:7001> incr key1   对key1值做加加,也就是递增的操作,并返回新值
127.0.0.1:7001> incrby  key1 5  对key1值做每次递增5的操作,并返回新值
decr与incr相反,做递减的操作  decrby与incrby相反,做递减操作
127.0.0.1:7000> get mail
"123456"
127.0.0.1:7000> append mail @qq.com 给指定的key的字符串增加value,返回新字符串的长度
(integer) 13
127.0.0.1:7000> get mail
"123456@qq.com"
127.0.0.1:7000> STRLEN mail  返回指定key的value值的长度
127.0.0.1:7000> del mail     删除一个已经创建的key
redis中常用的命令: 键值相关命令: key h*lo 查找以h开头,lo结尾的键 exists name 查找name键是否存在,1表示存在,0表示不存在 del name 删除name键 expire age 20 设置age键的过期时间为20秒 ttl 以秒为单位,返回给定key的剩余生存时间 select 3 选择数据库,3 指的是数据库3,默认有0-15,共16个数据库 move age 7 移动一个键到指定的数据库,将age键从当前库移动到数据库7 randomkey 随机返回一个当前库的键 rename 对键值进行重新命名 rename name NAME tpye 查看一个键的类型(string hash list set zset,) ping 测试服务器是否可以连接 echo 在命令行输出字符串,字符串需要用引号扩起来 quit 退出数据库
save 保存所有数据,save命令回阻塞所有端口的请求, 生产环境一般使用BGSAVE代替,save是保存数据的最后手段 dbsize 返回当前库中键的数量 info 获取服务器的详细信息 config get 获取redis服务器配置文件中的参数,也支持通配符 config get * 获取服务器配置文件的所有参数 config get dbfilename 获取服务器的数据库文件名 flushdb 删除当前数据库中所有的数据 flushall 删除数据库中的所有数据 添加数据库密码:redis.conf --> requirepass password-->pkill redis--> redis-server ../redis.conf --> redis-cli -h IP地址 -P port -ppassword (使用集群用-c) -h ip地址在使用本地数据库的情况下可以省略 -p password 最好也不要使用,会在历史命令中留下密码信息, 可先进入,redis-cli -p 6379, 再使用auth password,输入密码进入数据库 redis主从复制的特点: 1、master可以拥有多个slave 2、多个slave可以连接同一个master外,也可以连接到其他slave上 3、主从复制不会阻塞master,在同步数据时,master可以继续处理client请求 4、提高系统的伸缩性 redis主从复制过程: 1、slave与master建立连接,发送sync同步命令 2、master会启动一个后台进程,将数据库快照保存到文件中, 同时master主进程会开始收集新的写命令并缓存 3、后台完成保存后,就将此文件发送给slave 4、slave将此文件保存到硬盘上 redis对事务的处理 redis只能保证一个client发起的事务中的命令可以连续的执行, 中间不会插入其他的client命令。 multi命令发出后进入一个事务,该命令后的命令不会立即执行, 而是先存储在一个队列中,当命令对应结束命令时, redis才会对队列当中存储的命令进行依次顺序执行或取消执行。 exec是执行事务,discard是回滚,取消事务。 发布订阅消息: 相同的客户端启动多个,在一个客户端发布消息,其他客户端都可以收到 127.0.0.1:6379> SUBSCRIBE cctv1 此客户端处于监听cctv1频道的消息 127.0.0.1:6380> publish cctv1 hello 这个客户端发布消息到cctv1频道 127.0.0.1:6379> psubscribe * 监听所有频道 127.0.0.1:6379> psubscribe cctv.* 监听所有以cctv开头的频道 127.0.0.1:6379> unsubscribe cctv1 取消订阅 127.0.0.1:6379> unsubscribe cctv1.* 127.0.0.1:6379> PUBSUB channels 查看当前服务器订阅的所有通道 127.0.0.1:6379> PUBSUB channels.* 查看当前服务器订阅的以chnnels开头的通道 127.0.0.1:6379> pubsub numsub cctv1,cctv2,cctv3 查询订阅通道订阅者数量,支持多通道一起查询

查看原文:http://www.chenqmc.com/?p=376
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值