美文网首页
redis的几个操作,还有谁不知道的?

redis的几个操作,还有谁不知道的?

作者: 编辑小猿 | 来源:发表于2019-05-20 14:54 被阅读0次

    redis是什么:

    Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

    redis是开源,BSD许可,高级的key-value存储系统。

    可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务。

    安装

    wget http://download.redis.io/releases/redis-5.0.4.tar.gz

    tar xzf redis-5.0.4.tar.gz

    cd redis-5.0.4

    make

    缺少make包, 则需要通过 sudo apt-get install make 安装

    make报错 /bin/sh: cc: command not found 缺少gcc包, 通过 sudo apt-get install gcc

    如果报错 fatal error: jemalloc/jemalloc.h: No such file or directory 则使用 make MALLOC=libc 编译

    可以使用命令 make test 测试. 报错 You need tcl 8.5 or newer in order to run the Redis test 则需要安装tcl包.

    安装方法如下:

    wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz

    sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/

    cd /usr/local/tcl8.6.1/unix/

    sudo ./configure

    sudo make

    sudo make install

    安装完成后运行 make test 命令成功。

    需要安装到指定目录, 则可以使用 make install PREFIX=/mnt/d/redis 注意添加配置文件

    我的同事们

    启动命令

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

    以后台进程的方式启动需要修改 redis.conf 文件的 daemonize=yes

    客户端连接 sh /redis-cli -h 192.168.1.123 -p 6379

    配置文件中的 bind 用来绑定服务端的ip, 为了安全,默认不允许外网访问

    默认保护模式 protect-mode=yes

    多数据支持

    默认支持16个数据库, databases=16 , 默认使用的是DB 0 . redis数据库不支持自定义名称, 且不能单独做授权, 各个数据库之间并非完全隔离. flushall 命令可以清空redis中所有的数据.

    select 3 转到索引为3的数据库

    使用命令

    keys prifix* 查找到所有开头为prifix的键, pattern 可以使用[? * [] ]匹配

    EXISTS key 是否存key

    type key 获取数据结构

    字符类型

    key的最大存储为512M.

    set key value 比较重要的 setnx

    get key

    incr key 递增值 incrby key [step] 递增指定的step

    strlen key 获得长度

    mget key1 key2 key3 批量获取多个key的值

    set key1 value1 key2 value2 批量设置多个键值

    key的设计可以参看阿里的规范, 例如 业务名:表名:id

    列表类型

    lpush key value 左边push数据,对应的是 rpush

    lpop key 获取数据, 同时数据被移除,对应的是 rpop

    llen key 列表长度

    lrange key start stop 获取片段, start=-1 表示从头,stop=-1表示到结尾

    lrem key count value 删除

    lset key index value 设置索引的值

    散列类型

    不支持数据类型嵌套, 比如hash中存储一个list.

    hset key field value

    hget key field

    hmset key field1 value1 field2 value2

    hmget key field1 field2

    hgetall key

    hexists key field

    hincryby

    hsetnx

    hdel key field

    集合类型

    和list相比, 不能有重复元素, 且是无序的

    sadd key member...

    smembers key

    sdiff key1 key2

    sunion key1 key2

    有序集合

    zadd key score member

    zrange key start stop withscores

    可以用来做排名统计

    请下命令

    redis的事务

    比较鸡肋, 不建议使用, 有时候不能回滚

    multi 开启事务;

    set get... 等操作为具体的事务操作

    exec 提交事务

    过期时间

    expire key timeout 设置超时时间

    ttl key 获得key过期时间

    发布订阅

    publish channel message

    subscribe channel

    分布式锁

    可使用 setnx 实现

    感谢你耐心看完了文章…

    关注作者,我会不定期在简书分享Java,Spring,MyBatis,Redis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构,BATJ面试 等资料…

    相关文章

      网友评论

          本文标题:redis的几个操作,还有谁不知道的?

          本文链接:https://www.haomeiwen.com/subject/stjkzqtx.html