redis简介
Redis是一个非关系型【Nosql:key-value】的缓存数据库,实际开发中Redis一般作为缓存使用,加快查询效率
redis性能非常好,官方提供测试数据:50个并发执行10万个请求,读的速度是11万次/s,写的速度是8.1万次/s。
redis安装
安装步骤
- 安装c所需要的预编译环境:yum install gcc-c++
- 解压redis到指定目录:tar -zxvf redis-5.0.4.tar.gz -C /opt/install 其中大写的C指定解压到的目录
- 进入到redis的解压目录进行编译安装
编译:make(直接在解压目录下输入make即可)
安装:make install PREFIX=/usr/local/redis - 配置环境变量 vim /etc/profile(末行模式:输入:$回车,即可到文档末尾)配置内容如图,保存退出
使立即生效 source /etc/profile
输入redis-server启动(前台启动,占用窗口),ctrl+c退出
redis启动
默认是前台启动,但是占用linux窗口,
如果想要设置为redis作为后台服务进程启动
- 修改redis解压目录下的redis.conf文件:daemonize yes
- 将redis解压目录下的redis.conf文件 复制到 /usr/local/redis/bin/redis.conf
- redis-server /usr/local/redis/bin/redis.conf
本地启动客户端:redis-cli
远程:redis-cli -h 192.168.32.187 -p 端口
退出客户端;exit或quit
从客户端关闭服务器端的redis
图形化界面客户端
安装 redis-desktop-manager
修改配置文件,不然windows上的客户端连接不上
关闭保护模式
bind 127.0.0.1表示只能连接 ,所以我们需要注释掉这一行
保存退出
重启redis
添加一个键值对
十六个库
默认是库1
redis操作
切换库
redis默认是16个库,在命令行中切换数据库 select <dbid>:dbid介于0到15
redis的5种数据类型
- string
- hash:类似于java中的map,适合存储对象类型
- list:类似于java中List【有序、可重复的】,适合存储java中List集合数据类型
- set:类似于java中set集合【无序、不可重复】,适合存储java中set集合数据类型
- zset[Sorted Set]:排过序的集合,适合做排名
key的操作
- keys k*:查看当前库中所有的key
- type key:查看key的数据类型
- flushdb清空当前选中的数据库
- ttl key:查看某个key的存活时间,单位是秒
返回值:
正整数:key还剩下的存活时间
-1:表示该键值对永不过期
-2:表示这个键值对不存在 - expire key second:设置某个key的过期时间
- pexpire key milliseconds:生存时间设置单位为:毫秒
- persist key :清除生存时间
- exists key:查看某个key是否存在,存在返回1,不存在返回0
- del key:删除某个key
- rename oldkeyname newkeyname:给某个key修改名称
- dbsize:查看当前库中所有的key的个数
- info:查看当前redis服务器信息
- move key dbid:将指定的key-value剪切到指定的库中
String类型
-
set key value:给指定的key设置对应的value
-
get key:根据指定的key取出该key对应的值
-
mset key1 value1 key2 value2…:同时给多个键指定相应的值
-
mget key1 key2…:同时获取多个键对应的值
修改:
-
getset key newvalue:先将该key对应的值获取到,然后再给该key设置一个新值
-
incr key:表示给key对应的value值增加1,要求:key对应的value必须是数值类型
-
incrby key increment:表示给key对应的value值增加指定的幅度。要求:key对应的value必须是数值类型
-
decr key:表示给key对应的value值减加1
-
decrby key decrement:表示给key对应的value值减少指定的幅度
-
append key newvalue:表示给该key对应的值后面拼接一个newvalue
-
del key:删除指定的key-value
hash类型
-
hset key field value;给某个key添加一个field-value值
-
hget key field:读取某个key的某个field值
-
hmset key field1 value1 field2 value2:给某个key同时设置多个field-value1
-
hmget key field1 field2:同时获取某个key的多个field值
-
hsetnx key field value:当某个key的field不存在的时候,给它设置一个值。如果存在,不做修改。
-
hkeys key:查看某个key的所有field
-
hvals key:查看某个key的所有的field对应的value
-
hgetall key:查看某个key所有的field及field对应的值
-
hdel key field:删除某个key中的某个指定的field
-
del key:删除key及key对应的所有的field-value
-
hincrby key field increment:给某个key的指定的某个field对应的value值加指定的幅度(减的话加上-)
-
hexists key field:判断指定的key中的filed是否存在,存在返回1,不存在返回0
-
hlen key:查看指定这个key的所有field的数量
list类型
-
lpush key value1 value2 value3: 从左边往key对应的list集合中推入value1、value2、value3
-
rpush key value1 value2 value3:从右边往key对应的list集合中推入value1、value2、value3
-
lpop key:表示从这个key对应的集合中最左边弹出一个元素。
-
rpop key:表示从这个key对应的集合中最右边弹出一个元素
-
lrange key start stop: 查看指定的某个key对应的列表
-
llen key:查看某个key对应的集合中元素的个数
set类型
-
sadd key value1 value2 value3:往指定key对应的集合中添加数据
-
srem key value1:移除指定key对应的set集合中的某个value值
-
sismember key value1:判断指定key对应的set集合中是否含有某个value元素,有返回1,没有返回0
-
sdiff key1 key2:求两个集合的差集(key1 - key2)
-
sinter key1 key2:查看两个集合的交集
-
sunion key1 key2:求两个集合的并集
-
scard key:获取某个key对应的集合中元素的数量
-
srandmember key:随机读取指定key对应的集合中的某个元素
-
smembers key:查看某个key对应的set集合中的所有元素
zset类型
- zadd key1 89 value1 20 value2 40 value3:
- zscore key1 value1:查看指定的key对应集合中的某个元素的分数
- zrem key1 value:删除指定集合的某个元素
- zrange key start stop [WITHSCORES]:查看指定的集合中的某些元素
- zrevrange key start stop [WITHSCORES]:按着分数由高到低查看集合中的某些元素