redis是什么:面试
安装redis
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面试 等资料…