一、安装

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 生存时间设置单位为:毫秒