1. 安装
window下安装:下载地址
https://github.com/MSOpenTech/redis/releases
选择64位的ZIP压缩包点击下载,下载完成后解压,并将解压后的文件夹重命名为redis,方便后面使用
1、使用cmd命令行进入解压后的redis目录
2、在redis目录下 运行redis-server redis.windows.conf,启动redis服务,此时当关闭命令窗口redis服务也会关闭,其中后面的redis.window.conf可以省略
3、可以将redis服务安装成windows服务,在redis目录下的命令窗口输入:redis-server --service-install redis.windows.conf即可
4、查看服务是否配置成功,右键计算机—管理—服务,查找是否有Redis服务,如果启动,代表windows上的redis服务已经配置成功,redis服务已经启动。
2.Redis命令
不关闭刚才的doc窗口,重新打开一个新的doc窗口,启动本机Redis客户端:redis–cli ,此命令连接到本机的Redis服务,同时用PING命令检测本机Redis服务是否启动
连接远程Redis服务: redis–cli –h host –p port –a “password” 其中host为远程主机IP地址 Port为远程Redis服务端口号 Password为远程Redis服务密码
例子连接了127.0.0.1的6379端口的Redis服务,密码为1234,其实也就是本机的Redis服务
用客户端连接了redis服务之后,就可以在当前命令行里使用redis命令来操作redis数据库了
3.Redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。
- String(字符串)(最常用) string是redis最基本的类型,是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。
- Hash(哈希)(常用) Redis hash 是一个键值(key=>value)对集合。 Redis hash 是一个 string 类型的 key和 value 的映射表,hash 特别适合用于存储对象,相当于java中的Map集合。
- List(列表) Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
- Set(集合) Redis的Set是string类型的无序集合。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
- zset(sorted set:有序集合)(了解) Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 zset的成员是唯一的,但分数(score)却可以重复。
4.Redis键命令
在关系型数据库中,各种数据库都有自己对应操作命令,一般而言都是通用的SQL语句,在redis中,也有一套专用的“SQL”语句,我们一般称其为redis命令。
例如: 在mysql中想要查询某张表的数据 Select * from tablename tablename为表名 在redis中想要查询某个key存储的数据 Get keyname keyname为key名
Redis中有5种支持的数据类型,针对不同的数据类型,Redis有不同的操作命令,接下来将会一一介绍。
SET keyname value | 新建一个键值对,keyname为键名,value为存储的值 |
DEL keyname | 删除一个已存在的key,keyname为键名,成功返回1,失败返回0 |
EXISTS keyname | 判断一个key是否存在,keyname为键名, |
RENAME key newkey | 重命名一个已存在的key,key为原来的键名,newkey为新键名 |
EXPIRE key seconds | 给一个已存在的key设置过期时间,key为键名,seconds为秒数 |
PERSIST keyname | 移除key的过期时间,key将永久保持,keyname为键名 |
TTL keyname | 以毫秒数返回key的剩余时间,keyname为键名 |
RANDOMKEY | 从当前数据库随机返回一个key |
示例:存入一个key-value,key为“testKey”,value为“testValue”,最后再根据key从redis里查出数据。
5.Redis字符串命令
SET keyname value | 设置一个键值对,keyname为键名,value为存储的值 |
GET keyname | 获取指定key对应的值,keyname为键名 |
GETSET keyname value | 将指定key的值设为value,同时返回该key原来的旧值 |
MGET key1 key2….. | 获取所有给定key的值 |
GETRANGE key start end | 获取指定key里的截取字符串,start为起始位置,end为结束位置 |
STRLEN keyname | 获取指定key里存储字符串的长度 |
INCR keyname | 给指定key里存储的数字增1 |
APPEND keyname value | 给指定key里存储的字符串末尾追加value |
6.Redis哈希(hash)命令
HMSET key field1 “value1”… | 同时将多个 field-value (域-值)对设置到哈希表 key 中 |
HDEL key field1 field2….. | 删除指定key哈希表的一个或者多个字段,key为哈希表的键,field1为哈希表里的字段名 |
HEXISTS key field | 查看指定key的哈希表内是否存在field字段 |
HGET key field | 获取指定key的哈希表内的field字段存储的值 |
HGETALL key | 获取指定key的哈希表的所有字段和值 |
HKEYS key | 获取指定key的哈希表中所有的字段 |
HMGET key field1 field2… | 获取指定key的哈希表中所有指定字段的值 |
HVALS key | 获取指定key的哈希表中所有的值 |
7.Redis列表(List)命令
LPUSH key value1 value2… | 同时将一个或多个值插入到列表头部,设定的key即为列表的键 |
LPUSH key value1 value2… | 同时将一个或多个值插入到已存在的key对应的列表头部 |
LPOP key | 移出并获取指定key的列表中的第一个元素 |
LINDEX key index | 通过索引获取指定key的列表中的元素,index从0开始 |
LRANGE key start stop | 通过索引获取指定key的列表中某个范围的元素 |
RPOP key | 移出并获取指定key的列表中最后一个元素 |
LREM key count value | 移出指定key的列表中,与value相等的元素 count>0 从表头开始搜索;count<0 从表尾开始搜索;count=0 移出所有与value相等的元素 |
LTRIM key start stop | 截取指定key的列表中的部分元素 |
8.Redis集合(Set)命令
SADD key m1 m2… | 向集合添加一个或多个成员 |
SCARD key | 获取指定key对应的集合内的成员数 |
SINTER key1 key2 | 获取所有给定集合的交集 |
SISMEMBER key member | 判断member元素是否是集合key的成员 |
SMEMBERS key | 返回集合中的所有成员 |
SPOP key | 返回并移出集合中的一个随机元素 |
SREM key member1 member2 | 移除集合中一个或多个成员 |
9.Redis缓存特性
为什么要用Redis当作缓存容器?
- 性能高 – Redis能读的速度是110000次/s,写的速度是81000次/s ,而关系型数据库MYSQL读写速度仅为2000次/s左右。
- 数据类型丰富 – Redis支持二进制安全的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
- 原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- Key过期 – Redis还支持 publish/subscribe通知订阅模式, key 过期等等特性。