• redis的安装和类型及基本命令


    一、memcached和redis区别

    1. redis 可以存储,memcached用来缓存,

    2. 数据类型,memcached只有string;redis有string,链表,哈希结构,集合,有序集合

    二、redis安装

    1. http://download.redis.io/releases/  在这里下载

    2. 下载源码,解压,不用config  ,直接make

    3. 注意:一碰到时间错误的问题,

      原因:源码官方configure过,官方configure时生成的文件有时间戳信息,make只能发生在configure之后,如果虚拟机时间比configure的时间早就会报错,

      解决:data -s ‘yyyy-mm-dd hh:mm:ss’    重写时间,再lock -w  写入cmos

    4. 在src下make test

    5. 在 redis目录下,make install

    6.  安装之后bin文件讲解

    1. redis-benchmark    redis性能测试工具
    2. redis-check-aof    检查aof日志工具
    3. redis-check-dump   检查rdb日志工具
    4. redis-cli          链接用的客户
    5. redis-server       redis服务进程

    7. 拷贝redis.conf 配置文件 到bin目录下

    cp /usr/common/redis-2.6.16/redis.conf ./

    8. 启动与连接

        //启动
    ./bin/redis-server ./redis.conf

    //打开一个终端链接redis
    ./bin/redis-cli 

    9. 让redis以后台进程的形式运行

    修改配置文件redis.conf:
    daemonize yes

    ps aux|grep redis //看进程

    三、基本命令

    注意:redis默认有16个数据库,分别是从0-15进行编号的,默认在0号数据库中操作,在conf中配置database 

    1.  set/get

    set aa bcd
    
    get aa

    2. key


    keys
    * //获取所有的keys
    keys site //精确查
    keys s* //模糊查
    keys sit[ey] //模糊查 site或者sity
    keys pattern //查询相应的key
    在redis中允许模糊查询key,有三个通配符*,?,[]
    *:统配任意多个字符
    ?:统配任意单个字符
    []:统配[]内的某一个字符


    randomkey:返回随机的key


    type age //显示变量类型,存储类型


    exits key 判断是否存在,存在返回 1 ;不存在 返回 0


    del age //删除key


    rename site an //重命名,site改为an


    renamenx an ab //把key改名为新key 如果ab不存在则修改,存在就不修改


    an 1 //移动key=an 到1库
    select 1 //转换到1库

    3. redis字符串类型的操作


    set
    key value [ex 秒数] [px 毫秒数] [nx]/[xx]
    如:set a 1 ex 10 10秒有效
      set a 1 px 9000 9秒有效
    注:ex,px不要同时写否则以后面的有效期为准
    如:set a 1 ex 100 px 9000 实际有效期是9000毫秒
    nx:表示key不存在时执行操作
      如:set site www.abc.com nx

    xx:表示key存在时执行操作
      如:set site www.abc.com xx (相当于修改site的值)


    mset multi set 一次性设置多个键值
    如:mset key1 v1 key2 v2...


    mget key1 key2 keyn 获取多个key值


    setrange key 2 ?? hello--->he??o
    setrange key 6 ! hello--->hellox00xa3xa1
    append word ## hello--->hello## 追加
    getrange key start stop //获取字符产中【start stop范围的值】 包括start和stop
                    //注意:对于字符串的小标,左数从0开始,右数从-1开始
      eg :
    getrange area 1 4 area = chinese chinese--->hine(最终)
        getrange area 0 -3 chinese--->chine(最终)
         getrange area 1 -3           chinese--->hine(最终)
    注意: start>=length,则返回空字符串
            stop>=length,则截取至字符结尾
            如果start所处的位置在stop右边,则返回空字符串


    getset key newvalue 获取并返回旧值,设置新值


    incr age 加一 (计数,抢单)
    decr age 减一
    incrby
    age 5 加5
    decrby age 10 减10
    incrbyfloat age 0.5 //浮点数增加0.5


    4. redis  link 链表结构 类型的操作

    ①:lpush key value  把值插入到链表头部    l:left  r:right

    ②:rpop key 返回病删除链表尾元素

    ③:rpush 尾部插入 lpop 左侧删除

    ④:lrange key start stop 返回链表中[start,stop]中的元素 规律,左数从0开始,右数从-1开始

    ⑤:lrem key count value 从key链表中删除value值 注:删除count的绝对值个value后结束 count>0 从表头删除 count<0 从表尾删除

    ⑥:ltrim key start stop 剪切key对应的链接,切[start,stop]一段,并把该段重新赋值给key
    ⑦:lindex key index  返回index索引上的值

    ⑧:llen key 作用计算链接表的元素个数

    ⑨:linsert key after|before seach value 在key链表中寻找search,并在search值之前之后,插入value 注:一旦找到一个search之后,命令就结束了,因此不会插入多个value

    ⑩:rpoplpush source dest 把sourch的尾部拿出来放在dest的头部并返回该单元值
    ⑪:brpop ,blpop key timeout  等待弹出key的尾/头元素  timeout尾等待超时时间,如果timeout为0则一直等待

     5. redis hash 哈希数据类型

    ①:hset key field value   把key中filed域的值设为value  注:如果没有field域,直接添加,如果有,则覆盖原field域的值

    ②:hmset key field1 value1[field2 value2 field3 value3 ... fieldn valuen] 设置field1->N个域,对应的值是value1->N (感觉有点像 HashMap hashMap(key) = {field1->value1 ...})

    ③:hget key field 返回key中field域的值

    ④:hmget key field1 field2 fieldN 返回key中field1,field2,fieldN域的值

    ⑤:hgetall key 返回key中,所有域与其值

    ⑥:hdel key field 删除key中field域

    ⑦:hlen key 返回key中元素的数量

    ⑧:hexists key field 判断key中有没有field域

    ⑨:hinrby key field value 是把key中的field域的值增长整型值value

    ⑩:hinrby float key field value 是把key中的field域的值增长浮点值value

    ⑪:hkeys key 返回key中所有的field
  • 相关阅读:
    路由器DHCP 动态主机配置
    nat转换
    静态路由的实验
    不同vlan之间的相互访问
    IP的包头格式什么?请分析每个字段的含义
    IP地址的分类
    关于对JSON.parse()与JSON.stringify()的理解
    Ajax工作原理
    关于css伪类
    开发 | 如何在微信小程序的页面间传递数据?
  • 原文地址:https://www.cnblogs.com/an5211/p/7169461.html
Copyright © 2020-2023  润新知