为什么要学习这个?
分布式技术必会,得益于redis的设计理念,内存数据库,epoll(多路复用)模型,单线程模型除去了锁和上下文切换,提高了性能.单线程保证执行顺序(轮询),在分布式环境下对于数据的一致性和唯一性应该是经常需要考虑到的.
简单入门:
1.数据结构:(特性对比java 集合)
2.功能:
3.存储
默认支持16个数据库;可以理解为一个命名空间
跟关系型数据库不一样的点
通过 select dbid 去选择不同的数据库命名空间 。 dbid的取值范围默认是0 -15
4.key 最大521M
===================================================================
实战 使用: 环境 centos7.0 redis4.0.10
安装
1.下载https://redis.io/download
2.解压 tar -zxvf 安装包
3.cd redis-4.0.10
4.执行make
(如果出现 *** [adlist.o] Error 127 ,先安装gcc 命令是:yum install gcc)
(如果出现zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录 执行命令:make MALLOC=libc)
4.1 make test (建议预先编译查看有没有问题)
(如果出现错误You need tcl 8.5 or newer in order to run the Redis test ,
参考:https://blog.csdn.net/luyee2010/article/details/18766911 )
5.启动 src/redis-server 后台运行
以后台进程的方式启动,修改redis.conf daemonize =yes
6客户端连接 (修改配置 redis.conf bind 0.0.0.0)
./redis-cli -h 127.0.0.1 -p 6379
7.bin 目录下的其他命令
Redis-server 启动服务
Redis-cli 访问到redis的控制台
redis-benchmark 性能测试的工具
redis-check-aof aof文件进行检测的工具
redis-check-dump rdb文件检查工具
redis-sentinel sentinel 服务器配置
==================================================================
通用命令,根据key 做相关增删改查以及设置key的失效时间 (http://www.redis.net.cn/order/3531.html)
赋值和取值
SET key value
setnx (用来做分布式锁)
GET key
递增数字(原子递增,默认为加1)
incr key
incrby key increment 递增指定的整数 eg: incrby shuaige 10
decr key 原子递减
append key value 向指定的key追加字符串
strlen key 获得key对应的value的长度
mget key key.. 同时获得多个key的value
mset key value key value key value …
setnx
list, 可以存储一个有序的字符串列表
LPUSH/RPUSH: 从左边或者右边push数据
LPUSH/RPUSH key value value …
llen num 获得列表的长度
lrange key start stop ; 索引可以是负数, -1表示最右边的第一个元素
lrem key count value
lset key index value
LPOP/RPOP : 取数据
应用场景:可以用来做分布式消息队列
不支持数据类型的嵌套(valu 是其他数据类型,比如list )
hset key field value
hget key filed
hmset key filed value [filed value …] 一次性设置多个值
hmget key field field … 一次性获得多个值
hgetall key 获得hash的所有信息,包括key和value
hexists key field 判断字段是否存在。 存在返回1. 不存在返回0
hincryby
hsetnx
hdel key field [field …] 删除一个或者多个字段
set 跟list 不一样的点。 集合类型不能存在重复的数据。而且是无序的
sadd key member [member ...] 增加数据; 如果value已经存在,则会忽略存在的值,并且返回成功加入的元素的数量
srem key member 删除元素
smembers key 获得所有数据
sdiff key key … 对多个集合执行差集运算
sunion 对多个集合执行并集操作, 同时存在在两个集合里的所有值
zadd key score member
zrange key start stop [withscores] 去获得元素。 withscores是可以获得元素的分数
如果两个元素的score是相同的话,那么根据(0<9<A<Z<a<z) 方式从小到大
MULTI 去开启事务
EXEC 去执行事务(注意,虽然开启了事务,但是如果执行的过程有问题的话,不会回滚!) 图中,先hset persin name tom (persin是hash类型,开启事务 用zadd persin jinjian 肯定报错,但是查询 get kkk 依然可以得到值)
expire key seconds
ttl 获得key的过期时间
publish channel message
subscribe channel [ …]
原文:https://www.cnblogs.com/jinjian91/p/9326958.html