redis

1.redis是一种速度非常快的非关系型数据库,它可以存储键(key)与5钟不同类型的值(value)之间的映射,可以将存储在内存中的键值对数据持久化到硬盘中。
2.redis是一个Key-Value存储系统

  •   string(字符串)
  •   list(链表)
  •   set(集合)
  •   zset(有序集合)

    他们都支持push/pop add/remove及交集,并集,差集及一些其他的丰富操作(原子操作),在此基础上,redis还支持各种排序,实现主(master)从(salve)同步
3.CAP原则(定理)(要么CA,要么CP,要么AP,不存在CAP)。指的是在一个分布式系统中,Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性)三者不可兼得

  • C:在分布式系统中的所有数据备份,在同一时刻是否同样的值。
  • A:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求
  • P:分区,以实际效果而言,相当于对通信的时间做出要求。系统如果不能在时限内达成数据的一致性,就以为着发生了分区,必须就当前操作做出A和C之间的选择

3.启动redis(进入redis目录,启动服务器,启动客户端)
(1)现启动服务器,进入redis目录,使用src/redis-server启动服务器(不推荐这种方式)
         推荐方式:src/redis-server redis.conf --deamonize yes
(2)再启动客户端src/redis-cli --raw(解决中文值的问题)
(3)control+c停止客户端实例
(4)客户端停止服务器redis-cli shutdown,或者服务端使用control+c
4.简单操作redis

  • 插入数据:set name
  • 查询数据:get name
  • 删除键值 :del name
  • 验证键是否存在:exists name

5.String类型及操作(最简单的类型)

  • setnx name:设置键值前判断是否键已存在
  • setex haircolor 10 red:添加haircolor=red,并设置时限10秒
  • setrange name 3 hello:把name的值从第3个字符后开始全部替换
  • mset key1 10 key2 20:一次可以设置多个键值对(要么都设置,要么都没设置)
  • msetnx:设置多个键值之前判断键是否存在
  • getset name uu:设置name的值并返回name的旧值
  • getrange name 0 6:获取name的第0到第6的子字符串,如果从右面开始数,那么从-1开始,从右往左一次递减
  • mget:一次获得多个键的值
  • incr:对key的值做加操作(只能对int)
  • incrby age 5:设定一次加几
  • decr:减操作
  • decrby:指定减的值
  • append name @126.com:给指定的key追加值
  • strlen name:取出key的value的长度

6.hashes类型及操作(适合存储对象,存储在hash类型中比string类型更省内存,并且更方便,原因是新建一个hash对象,先存储在zipmap(small hash),超出内存,再换成hash)

  • hash结构:表名 字段名 值
  • hset myhash field1 hello:设值
  • hsetnx:设值判断存在与否
  • hmset:一次设置多个字段
  • hget:取值
  • hmget:一次取多个值
  • hincrby:给指定的hash field加上指定的值
  • hexists:判断存在与否
  • hlen myhash:看表有几个字段
  • hdel:删除
  • hkeys myhash:看表里的所有字段
  • hvals myhash:看表里的所有值
  • hgetall myhash:得到表的全部hash

7.lists类型及操作(链表(既可以用作栈,又可以用做队列。原因:push(添加)和pop(删除)可以从头部和尾部添加删除元素,l是左,r是右),主要功能:push,pop)(其实就是每一个子元素都是string的双向链表)

  • lpush mylist world:从头部添加元素
  • lrange mylist 0 -1:从头到尾展示mylist
  • rpush mylist hello:从尾部添加元素
  • linsert mylist before world hlj:在world前添加hlj
  • lset myliist 0 ok:在零的位置上替换为ok
  • lrem mylist 2 hello:从mylist中删除2个hello
  • ltrim mylist 1 -1:保留从1开始的所有数据(没有括号是闭区间,有括号是开区间)
  • lpop mylist:从头部删除元素
  • rpop:从尾删
  • rpoplpush:从第一个list的尾部删除元素,并添加到第二个list的头部(原子操作)
  • lindex mylst 0:返回mylist的第0个元素
  • len:长度

8.sets类型及操作(擅长添加删除查找,没有键只有值,所以值不允许重复)

  • sadd myset hello:添加元素
  • smembers myset:取出所有值
  • srem:删除
  • spop:删除,弹栈,所以不用指定
  • sdiff myset myset1:差集
  • sdiffstore myset3 myset myset1:将差集存为myset3
  • sinter:交集
  • sinterstore:交集存起来
  • sunion:并集
  • sunionstore:并集存起来
  • smove myset3 myset4 1:将1从myset3移除到myset4
  • scard myset:返回myset元素的个数
  • sismember myset2 two:myset2中是否存在two
  • srandmember:随机返回set的一个元素

9.sorted sets类型及操作(set的升级版本,增加了一个顺序属性(在添加修改元素的时可以指定))(可以理解为带id的一个mysql数据库)

  • zadd myzset 1(scores) one(值):添加
  • zrange myzset 0 -1 withscores:用scores排序
  • zrem myzset two:删除(连带scores一起)
  • zincrby myzset 2 one:对one的scores加2
  • zrank myzset two:返回two在myzset中的排名(从零开始,按scores排序)
  • zrevrank myzset two:返回two在myzset中的排名(按scores从大到小排序)
  • zrevrange myzset:按scores从大到小排序
  • zrangebyscore myzset (2 3 withscores:返回符合条件2<scores<=3的成员
  • zcount myzset 2 3:返回集合中scores在给定区间的数量
  • zcard myzset:返回集合中元素的个数
  • zscore myzset two:返回给定元素对应的score
  • zremrangebyrank myzset 3 3:删除集合中排名在给定区间的元素

10.redis常用命令

  • keys *:返回数据库中所有的键
  • keys mylist*:取出所有以mylist开头的键
  • exists,del,
  • expire name 10:设置name过期的时间10秒,用ttl name查看剩余的时间
  • select 0:操作0号数据库,一共16个数据库(号到15)
  • move mylist 15:移除mylist到数据库15
  • persist age:移除给定age的过期时间
  • randomkey:返回当前数据库的随机的一个key
  • rename age age_new:重命名key
  • type mylist:返回值的类型
  • ping:测试连接接是否联通
  • echo honkong:打印honkong
  • quit:退出连接
  • dbsize:看当前数据库的已用容量,即返回当前数据库中的key的数目
  • info:获取服务器的信息和统计
  • monitor:实时打印出redis服务器接收到的命令,调试用
  • config get dir:获取服务器配置信息
  • flushdb:删除当前选择数据库中的所有key
  • flushall:删除所有数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值