安装Reids
1.下载获得redis-3.2.5.tar.gz后将它放入Linux目录/opt
2.压解命令tar -zxvf redis-3.2.5.tar.gz
3.压解完成后进入目录 redis-3.2.5
4.在redis-3.2.5目录下执行make命令,执行make是为了编译的,报错gcc:命令未找到
解决:能上网方法
yum install gcc
yum install gcc-c++
不能上网:
安装完成后make会报错jemalloc/jemalloc.h:没有那个文件或目录,因为我之前make了一次,所以要make distclean后再make
然后make install
在/usr/local/bin会有下面几个文件
在环境变量,所以命令在任何目录下都能运行
说明
redis-server启动命令
ps -ef |grep redis查看redis进程命令
redis-server启动命令启动了
但是占用窗口,接下来设置redis后台启动
Redis后台启动
redis-server
普通启动,没有配置文件被指定,所以用默认配置文件
默认配置文件位置
将redis.conf 文件复制一份到我创建我目录下
修改拷贝过来的文件,修改redis.conf文件将daemonize no 改为yes 守护进程,让服务可以在后台启动
启动命令执行 redis-server /myredisconf/redis.conf
这样子redis就启动了
redis-cli 连接客户端
连接客户端,shutdown可以关闭redis服务
redis-cli shutdown这个命令也可以关闭redis服务器
多个端口号连接可以使用命令:
redis-cli -p 6379
多实例关闭,指定端口关闭:
redis相关
redis有16个数据库
用客户端工具连接后select 1,这样能选择第一个数据库
redis是一个单线程+多路IO服用技术
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,不如调用select和poll函数,传入多个文件描述符,如果有一个一个文件描述符就绪,则返回,否则阻塞直到超时,得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如线程池)
多路IO是linux的一个技术
Redis数据类型
String
String 是redis最基本类型,你可以理解成一个key对应一个value.String类型是二级制安全的,意味着Redis的string可以包含任何数据,不如jpg图片或者序列化对象
set
list
hash
zset
Redis的常用操作命令
key的常用命令
keys * 查询当前库的所有键
exists key 判断某个键是否存在
type key 查看键的类型
del key 删除某个键
expire key seconds 为键值设置过期时间,单位秒
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已经过期
dbsize 查看当前数据库的key的数量
Flushdb 清空当前库
Flushall 通杀全部库
String
get key
查询对应键值
set key value
添加键值对
append key value
将给定的value 追加到原值的末尾
strlen key
获得值的长度
setnx key value
只有在key不存在时设置key的值
incr key
将key中存储的数字增1只能对数字值操作,如果为空,新增值为1
decr key
将key中存储的数字减1,只能对数字值操作,如果为空,新增值为-1
incrby/decrby key <步长>
将key中存储的数字值增减,自定义步长
mset key1 value1 key2 value2 …
同时设置一个或多个key-value对
mget key1 key2 key3
同时获取一个或多个value
msetnx key1 value1 key2 value2 …
同时设置一个或多个key-value对,当且仅当所有给定key都不存在
getrange key <起始位置> <v结束位置>
获得范围的值,类似java中的substring
setrange key <起始位置> value
用 value 覆写 key 所存储的字符串值,从<起始位置>开始
setex key <过期时间> value
设置键值的同时,设置过期时间,单位秒
getset key value
以新换旧,设置了新值同时获得旧值
LIst
单键多值
Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加元素到列表的头部(左边)或者尾部(右边)
他的底层实际是一个双向链表,对两端的操作性能高,通过索引下标的值作中间的结点性能会比较差
lpush/rpush key value1 value2 value3
从左边/右边插入一个或多个值
lpop/rpop key
从左边/右边吐出一个值,
在键在,值光键亡
rpoplpush key1 key2
从key1列表右边吐出一个值,插到key2列表左边
lrange key start stop
按照索引下标获得元素(从左到右)
index key index
按照索引下标获得元素(从左到右)
llen key
获得列表长度
linsert key before|after value newvalue
在value的后面插入newvalue插入值
lrem key n value
从左边删除n个value(从左到右)
set
sadd key value1 value2…
将一个或多个member元素加入到集合key中,已经存在于集合的member元素将被忽略
smembers key
取出该集合的所有值
sismember key value
判断集合key是否为含有该value值,有返回1,没有返回0
scard key
返回该集合的元素个数
srem key value1 value2
删除集合中的某个元素
spop key [count]
随机从该集合中吐出[count]个值,不指定count则吐出一个
srandmember key n
随机从该集合中取出n个值,不会从集合中删除
sinter key1 key2
返回两个集合的交集
sunion key1 key2
返回连个集合的并集元素
sdiff key1 key2
返回两个集合的差元素(也就是key1减交集,sdiff key2 key1 就是key2减他们的交集 )
Hash
Reids hash 是一个键值对集合
Redis hash 是一个String类型和field 和value的3映射表,hash特别适合用于存储对象
类似java里面的Map<String,String>
hset key field value
get key集合中的 field键赋值value
hget key1 field
从 key1 集合 field 取出 value
hmset key1 field1 value1 field2 value2
批量设置hash的值
hexists key field
查看哈希表key中,给定域field是否存在
hkeys key
列出该hash集合的所有value
hincrby key field increment
为哈希表key中的域field的值加上增量increment
hsetnx key field value
将哈希表key中的域field的值设置为value,当且仅当域field不存在
zset
命令
**
zadd key score1 value1 score2 value2
将一个或多个member元素及其score值加入到有序集 key 中
zrange key start stop [WITHSCORES]
zrange key 0 -1 [WITHSCORES]获取全部
返回有序key中,下标在start stop之间的元素
带WITHSCORES,可以让分数一起和值返回到结果集
zrangebyscore key min max [withscores] [limit offset count]
返回有序集key中,所有score值介于min 和 max之间 (包括大于min或max)的成员,有序集成员按score值递增(从小到大)次序排列
zrevrangebyscore key max min [withscores] [limit offset count]
返回有序集key中,所有score值介于min 和 max之间 (包括大于min或max)的成员,有序集成员按score值递减(从大到小)次序排列
zincrby key increment value
为元素的score加上增量
zrem key value
删除该集合下,指定值的元素
zcount key min max
统计该集合,分数区间内的元素个数
zrank key value
返回该值在集合中的排名,从0开始
zcard key
查看元素个数
Redis配置文件相关
include表示当前配置文件可以包含另外的配置
临时的,只有在客户端有效,断开连接后失效
可以在配置文件改为永久,foobared是你的密码