redis

一、redis简介

1.redes介绍:

Redis:Remote Dictionary Server( 远程字典服务器 ) 是完全开源免费的,用 C 语言编写的,遵守BSD 协议,是一个高性能的 (key/value) 分布式内存数据库,基于内存运行并支持持久化的NoSQL 数据库,是当前最热门的 NoSql 数据库之一 , 也被人们称为数据结构服务器

2、redis作用:

1. 内存存储和持久化:Redis 支持异步将内存中的数据写到硬盘上,同时不影响继续服务
2. 取最新 N 个数据的操作,如:可以将最新的 10 条评论的 ID 放在 Redis 的 List 集合里面
3. 模拟类似于 HttpSession 这种需要设定过期时间的功能
4. 发布. 订阅消息系统
5. 定时器. 计数器

3、特点:

1. Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
2. Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset, hash 等数据结构的存储
3. Redis 支持数据的备份,即 master-slave 模式的数据备份
4. 如何获取 redis:http://redis.io/   | http://www.redis.cn/

二、redis安装

1.下载:wget http://download.redis.io/releases/redis-5.0.5.tar.gz

2.移动:mv redis-5.0.5.tar.gz /opt/  这是移动到opt下面的文件夹。

3.解压:先进入到opt文件夹下的install。tar -zxvf redis-5.0.5.tar.gz -C /install 这是解压到install目录内,install是自己创建的。

4.安装gcc:yum -y install gcc-c++ 。因为是c语言编写的所以需要c语言解释器。

5.编译:进入到redis文件夹下 然后执行make 进行编译 。

6.安装:make install PREFIX=usr/local/redis  就是把它安装到usr下面的local目录下的redis内,

目前redis 没有 会自动创建一个, 安装就是把redis的可执行命令放这里面。

7:配置一下环境变量,在任何地方都可以使用。

vim /etc/profile  :进入配置页面配置redis的环境变量。

 1 ####################################JAVA_HOME########
JAVA_HOME=/opt/install/jdk1.8.0_201 2 PATH=$PATH:$JAVA_HOME/bin 3 4 5 6 ###################################CATALINA_HOME###### 7 CATALINA_HOME=/opt/install/apache-tomcat-7.0.65 8 PATH=$PATH:$CATALINA_HOME/bin 9 10 11 #########################REDIS_HOME################## 12 REDIS_HOME=user/local/redis/ 13 PATH=$PATH:$REDIS_HOME/bin
注意:这三个环境变量分别是jdk,tomcat,redis的环境变量

8:source/etc/profile 刷新生效

 命令解析:

redis-server:服务端

redis-cli:客户端

redis-check-aof:对aof文件进行修复的

redis-check-dump:对dump文件进行修复的

redis-benchmark:对redis进行测试的

redis-sentinel ->redis-server:相当于一个快捷方式

三、redis作为后端服务程序运行

就是redis启动之后一直占用前端窗口没法输出命令,想办法让redis作为后台服务启动。

1.将opt/install/redis目录下的redis.conf的daemonize 后面的no 改为yes。,

  步骤:cd /opt/install/redis-5.0.7/  先进入这个目录里面。
  然后 ll 查看 发现redis.conf文件  然后输入:vi redis.conf 进去编辑 

  进去     /daemonize 是搜索这个内容  按n 进行下一个搜索,找到之后改了就行。

 2.同时将redis.conf拷贝到usr/local/redis/bin目录下。

       cp redis.conf /usr/local/redis/bin/  拷贝到这里面一份。
3. cd /usr/local/redis/bin  进入redis的bin目录 然后就是启动

./redis-server redis.conf     在这个目录下 启动服务器 后面跟着redis.conf 就是让他作为后端服务器运行。

4,然后可以通过下面这条命令查看rdis 是否启动:

ps -ef | grep redis     或者这种通过端口号查看  netstat -an | grep 637

出现这样就证明服务器正在启动!!

然后直接执行当前目录下的客户端让客户端启动

./redis-cli

然后输入ping 测试

至此结束。这样就和windows一样 在后台启动 就不会占用一个窗口了

四、redis客户端

4.1.命令行

./redis-cli   就是在启动服务端的时候 然后启动客户端 。

exit ,quit  是对出客户端  

shutdowm:是在客户端输出命令关闭服务端。

4.2.图形化界面 

找到erdis-desktop-manager 直接安装就行 。

进去后连接redis服务器:然后名称随便起,地址就是服务器在的虚拟机的ip:192.168.248.99

如果连接不上 可能版本问题

然后按照下面的修改下

修改redis.conf文件  

 protected-mode后的 yes 改成no 

Bind 127.0.0.1 给注释掉

然后重启redis.conf配置文件。 让他重新加载这个配置文件。

 ./redis-server redis.conf 

五、string,hash,key,list,set,zset

5.1String:

string可以存储任意类型的数据

set key value:给指定的key设置对应的value

SET key 名字 value 值 : 设置单一键值对 (key 值相同会覆盖原来的值 , 类似于 map 集合

 get key: 根据给定的key获取指定的值

APPEND key 名字 新值:在原有的值的基础上添加新的值
STRLEN key 名字 : 获取字符串的长度(key 值必须是数字 )

 mset key1 value1 key2 value2 key3 value3:同时设置多个键值对

 mget key1 key2 key3:同时根据多个键获取键对应的值

getset key1 value2:表示先获取key1对应的值value1,然后把key1的值设置为value2

 

要求:value值是数字类型的字符串。

incr key :表示将该key对应的value值增加1

incrby key increment:表示将给key对应的value值增加指定的幅度

 

decr key:表示将该key对应的value值减去1

decrby key decrement:表示将给key对应的value值减去指定的幅度

append key2 aaa:key2对应的value值后面拼接字符串

数值增加:

   用途:1.网站访问量统计

         2.生成表的id

5.2:key的使用:

keys * :指令 查看当前这个库中所有的 key 值
exists key 名字 : 判断某个 key 值是否存在 0 表示不存在 1 表示存在
move key 名字 数据库的索引下标 : 将某个值移除到指定的库中
expire key 名字 秒 :设定指定的 key 的存活时间

PERSIST key: 清除存活时间,让该key永不过期

PEXPIRE key milliseconds生存时间设置单位为:毫秒

rename key1 new_name:可以给某个key重命名
ttl key 名字 : 查看当前的 key 还有多少存活时间 -1 表示永不过期,-2 表示已经过期
type key 名字 : 查看当前 key 的类型(key String,Object)
select 下标 : Select 下标可以切换不同的数据库:

keys * :查看当前库中所有的key

flushdb:清空当前库中的所有键值对

flushall:清空所有库中的键值对

del key:删除指定的key-value键值对

dbsize:查看当前库中key的个数

INFO:查看当前redis服务器的信息
补充 : Redis 默认有 16 个库,我们可以通过修改 redis 配置文件 redis.conf 来改变库的量

5.3:Hash类型

Hash类型适合存储对象,格式如下

命令如下:

hset  key field value:给某个key设置指定的field-value

Hmset key field1 value1 field2 value2 field3 value3:同时给key设置多个field-value

hget  key field:根据field查看指定keyfield

hmget key field1 field2..:同时查看key对应的多个field

HSETNX key field value:key对应的某个field域不存在的时候,给该field赋值值!

hincrby zhangsan age -4:给指定的key的某个field增加对应的数值

hkeys key: 查看指定的key所有的field

hvals key:查看指定key的所有fieldvalue

Hgetall key:查看指定key的所有field-value

hdel key field:删除某个key对应的field-value

del key:删除某个key对应的所有field-value

HEXISTS key field:查看key的某个field是否存在,存在返回1,不存返回0

hlen key:查看某个key有多少个field-value

5.4: List类型【有序,可重复

lpush key value1 value2 value3:从左边依次往list集合中存放数据

rpush key  value1 value2 value3:从右边依次往list集合中存放数据

lpop key:默认将该key对应列表数据中最左边的那个元素弹出。

rpop key:默认将该key对应列表数据中最右边的那个元素弹出

llen key:查看某个key对应的列表中元素的个数

lrange key start stop:查看list集合中有哪些数据,指定查看起始位置和终止位置

5.5:Set类型:【无序,不可重复】

 

SET类型适合存储Java中的set集合数据

 

命令:

 

sadd key value1 value2 value3 value2: 往集合中添加了3个元素

 

srem key value2:删除key对应的集合中的value2元素

 

sismember key value2:查看指定的集合中是否含有某个元素,有返回1,没有返回0

 

smembers key:查看集合中所有的元素

 

集合可以和高中学过集合类似,可以参与交集、并集、差集的运算:

 

交集:sinter set01 set02:获取两个指定集合的交集

 

并集:sunion set01 set02:求两个集合的并集

 

差集:sdiff set01 set02:表示set01集合有而set02集合没有的元素

 

scard key:获取指定key的对应的集合元素的数量:

 

SRANDMEMBER  key:随机读取指定集合中的一个元素。

 

5.6: zset[Sorted set]

 

 

有序集合: 数据本身不可重复,但是数据都有一个分数,分数是可以重复

zadd key  98 value1 98 value2  90 value3:给指定的集合中添加元素,并且每个元素前面都有分数

zscore zset01 value2:获取集合中某个元素的分数

zrem zset01 value1:删除某个key对应集合中的某个元素

zrevrange zset02 0 1 withscores:查看指定集合中有哪些元素,按着元素分数逆序排列

zrange zset01 0 -1 withscores】:查看指定集合中有哪些元素,如果看分数则带withscores参数

可以实现游戏排名:

 

 

 

原文地址:https://www.cnblogs.com/ych961107/p/11919857.html