一、安装
1、安装C语言需要的GCC环境
yum install -y gcc-c++
yum install -y wget
2、下载并解压缩Redis源码压缩包
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -zxf redis-5.0.4.tar.gz
3、编译Redis源码,进入redis目录,执行编译命令
cd redis-5.0.4
make
4、安装Redis,通过 PREFIX 指定安装路径
make install PREFIX=/practice/server/redis
5、启动
cd /practice/server/redis/bin
./redis-server
6、进入redis命令客户端
./redis-cli
二、使用
1、Redis数据类型
五种数据类型:
String(字符类型)
Hash(散列类型)
List(列表类型)
Set(集合类型)
SortedSet(有序集合类型,简称zset)
在redis的命令中,命令是忽略大小写的,而key是不忽略大小写的。
2、String 类型
赋值
语法:SET key value
示例:set test 123
取值
语法:GET key
示例:get test
取值并赋值
语法:GETSET key value
示例:getset test1 222
递增数字
语法:INCR key
示例:incr num
增加指定的整数
语法:INCRBY key increment
示例:incrby num 2
递减数值
语法:DECR key
示例:incr num
减少指定的整数
语法: DECRBY key decrement
示例:decrby num 3
仅当不存在时赋值
语法:setnx key value
示例:setnx job "programmer"
获取字符串长度
语法:STRLEN key
3、hash类型
赋值
语法:HSET key field value
示例:hset user username zhangsan
设置多个字段值
语法:HMSET key field value [field value ...]
示例:hmset user age 20 username lisi
当字段不存在时赋值
语法:HSETNX key field value
示例:hsetnx user age 30
取值
语法:HGET key field
示例:hget user username
获取多个字段值
语法:HMGET key field [field ...]
示例:hmget user age username
获取所有字段值
语法:HGETALL key
示例:hgetall user
删除字段
语法:HDEL key field [field ...]
示例:hdel user age name
增加数字
语法:HINCRBY key field increment
示例:hincrby user age 1
判断字段是否存在
语法:HEXISTS key field
示例:hexists user age
只获取字段名或字段值
语法:HKEYS key
示例:hkeys user
获取字段数量
语法:HLEN key
示例:hlen user
获取所有字段
语法:hgetall key
String 类型和hash类型的区别
hash类型适合存储那些对象数据,特别是对象属性经常发生【增删改】操作的数据。 string类型也可以存储对象数
据,将java对象转成json字符串进行存储,这种存储适合【查询】操作。
4、List类型
LPUSH/RPUSH
语法:LPUSH key value [ value ...]
RPUSH key value [value ...]
示例:lpush list:1 1 2 3
rpush list:1 4 5 6
LRANGE
语法:LRANGE key start stop
示例:lrange list:1 0 2
LPOP/RPOP 从列表两端弹出元素
语法:LPOP key
RPOP key
LLEN 获取列表中元素的个数
语法:llen key
LREM 删除列表中指定个数的值
LINSERT 向列表插入元素
RPOPLPUSH 将元素从一个列表转移到另一个列表中
语法:RPOPLPUSH source destination
示例: rpoplpush list newlist
5、Set 类型
SADD/SREM 添加/删除元素
语法:SADD key member [member ...]
SREM key member [member ...]
示例:sadd set a b c
srem set c d
SMEMBERS 获取集合中的所有元素
语法:SMEMBERS key
示例:smembers set
SISMEMBER 判断元素是否在集合中
语法:SISMEMBER key member
示例:sismember set a
SCARD 获取集合元素中的个数
语法:SCARD key
示例:scard setA
6、ZSET
1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。
2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。
3 、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现)
4 、有序集合要比列表类型更耗内存。
ZADD 增加元素
语法:ZADD key score member [score member ...]
ZRANGE/ZREVRANGE 获得排名在某个范围的元素列表
zrange 从小到大的顺序
zrevrange 从大到小的顺序
语法: ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
7、通用命令
keys 返回所有满足给定pattern的所有key
语法: keys pattern
示例:keys mylist*
del 删除
语法:del key
示例:del test
exists 确认一个key是否存在
语法:exists key
示例:exists age
expire
语法:
EXPIRE key seconds 设置key的生存时间(单位:秒)key在多少秒后会自动删除
TTL key 查看key生于的生存时间
PERSIST key 清除生存时间
PEXPIRE key milliseconds 生存时间设置单位为:毫秒