一、下載
1.訪問redis官網:https://redis.io/
2.點擊按鈕開始下載redis最新穩定版
3.下載不下來的這裏提供一個5.0.9版本的:
鏈接:https://pan.baidu.com/s/1Z8gD6NiZfrvriRit77hjkA 提取碼:fv04
二、windows啓動
打開cmd,cd到redis所在的文件夾內,執行命令:redis-server.exe redis.windows.conf
三、Java驗證redis是否啓動成功
1.引用jar包
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
2.java代碼
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1");
System.out.println("服務正在運行: "+jedis.ping());
}
3.運行結果
啓動失敗:拋出redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to 127.0.0.1:6379異常
啓動成功:輸出 服務正在運行: PONG
四、字符串(string)
1.支持存儲類型
類型 | 取值範圍 |
字節串 | |
整數 | long integer |
浮點數 | double |
2.整數和浮點數支持自增和自減操作
3.命令 提示:windows系統雙擊redis-cli.exe即可測試命令
命令 | 描述 | 用例 | 返回 | JAVA方法 |
SET | 設置指定key的value | set name zhangsan | ok |
String set(String key, String value) |
GET | 返回指定key的value | get name | zhangsan |
String get(String key) |
GETSET | 返回指定key的value並賦予新value | getset name lisi | zhangsan |
String getSet(String key, String value) |
GETRANGE | 返回指定key的部分字符串 | getrange name 0 2 | lis |
String getrange(String key, long startOffset, long endOffset) |
SETRANGE | 設置指定key的部分字符串 | getrange name 0 ll | 7 |
Long setrange(String key, long offset, String value) |
MGET | 返回指定多個key的value | mget name age | lisi 2 |
List<String> mget(String... keys) |
MSET | 設置多個指定key的value | mset name zhaowu age 20 | ok |
String mset(String... keysvalues) |
SETEX | 設置指定key的value並設置過期時間(秒) | setex set 60 man | ok |
String setex(String key, int seconds, String value) |
SETNX | 當指定key不存在時纔可設置成功 | setnx set name | 0 |
Long msetnx(String... keysvalues) |
STRLN | 返回指定key的value長度 | strln name | 6 |
Long strlen(String key) |
INCR | 對指定key進行自增 | incr age | 21 |
Long incr(String key) |
DECR | 對指定key進行自減 | decr age | 20 |
Long decr(String key) |
INCRBY | 對指定key加上指定整數 | incrby age 10 | 30 |
Long incrBy(String key, long increment) |
DECRBY | 對指定key減去指定整數 | decrby age 10 | 20 |
Long decrBy(String key, long decrement) |
INCRBYFLOAT | 對指定key加上指定浮點數 | incrbyfloat age 1.1 | 31.10000000000000142 |
Double incrByFloat(String key, double increment) |
APPEND | 對指定key的value追加value | append name 3 | 7 |
Long append(String key, String value) |
五、列表(list)
1.命令及其java方法
命令 | 描述 | 用例 | 返回 | JAVA方法 |
RPUSH | 將一個或者多個值插入列表右側 | rpush list car1 car2 | 2 |
Long rpush(String key, String... string) |
LPUSH | 將一個或者多個值插入列表左側 | lpush list car3 car4 | 4 |
Long lpush(String key, String... string) |
RPOP | 移除並返回最右側的元素 | rpop list | car2 |
String rpop(String key) |
LPOP | 移除並返回最左側的元素 | lpop list | car4 |
String lpop(String key) |
LINDEX | 返回列表中指定位置的元素 | lindex list 1 | car1 |
String lindex(String key, long index) |
LTRIM | 將指定一段元素保留,其餘刪除 | ltrim list 0 0 | ok |
String ltrim(String key, long start, long stop) |
BLPOP | 從第一個非空列表中彈出位於最左端的元素或者在N秒內阻塞並等待可彈出元素 | blpop list list1 2 | list car3 |
List<String> blpop(int timeout, String... keys) |
BRPOP | 從第一個非空中彈出最右側的元素或者在N秒內阻塞並等待可彈出元素 | brpop list list1 2 | list cc2 |
List<String> brpop(int timeout, String... keys) |
RPOPLPUSH | 從第一個列表中彈出最右側的元素然後插入第二個列表的最左側並返回元素 | rpoplpush list list1 | cc1 |
String rpoplpush(String srckey, String dstkey) |
BRPOPLPUSH | 從第一個列表彈出最右側的元素插入第二個列表的最左端並返回元素,如果第一個列表爲空那麼阻塞N秒等待元素的出現 | brpoplpush list list1 3 | (nil) |
String brpoplpush(String source, String destination, int timeout) |
六、集合(set)
1.命令及其java方法
命令 | 描述 | 用例 | 返回 | JAVA方法 |
SADD | 將一個或多個元素添加到集合裏面,並返回添加成功的數量 | sadd set cat1 cat2 | 2 |
Long sadd(String key, String... member) |
SREM | 從集合移除一個或多個元素,並返回移除的數量 | srem set cat1 | 1 |
Long srem(String key, String... member) |
SISMEMBER | 檢查元素是否存在集合中,並返回存在的數量 | sismember set cat2 | 1 |
Boolean sismember(String key, String member) |
SRANDMEMBER | 從集合中隨機返回一個或多個元素,正數時不重複,負數可能重複 | srandmember set 1 | cat2 |
String srandmember(String key); List<String> srandmember(String key, int count) |
SPOP | 隨機移除集合中的一個元素,並返回元素 | spop set | cat2 |
String spop(String key); Set<String> spop(String key, long count) |
SMOVE | 隨機移除第一個集合的元素並插入第二個元素中,成功返回1 | smove set set1 1 | 0 |
Long smove(String srckey, String dstkey, String member) |
SDIFF | 返回存在於第一個集合但不存在於其他集合中 | sdiff set set1 | cat1 |
Set<String> sdiff(String... keys) |
SDIFFSTORE | 將第一個集合存在但其他不存在的元素存儲到第一個集合中 | sdiff set1 set | 1 |
Long sdiffstore(String dstkey, String... keys) |
SINTER | 返回多個集合同時存在的元素 | sinter set set1 | cat1 |
Set<String> sinter(String... keys) |
SUNION | 返回多個集合所有元素 | sunion set set1 | cat1 |
Set<String> sunion(String... keys) |
SUNIONSTORE | 將所有集合的元素存儲到第一個集合中 | sunionstore set set1 | 0 |
Long sunionstore(String dstkey, String... keys) |
七、散列(Hash)
命令 | 描述 | 用例 | 返回 | JAVA方法 |
HMGET | 從散列裏面獲取一個貨多個鍵的值 | hmget hash name age | zhangsan 22 |
List<String> hmget(String key, String... fields) |
HMSET | 爲散列插入一個貨多個鍵設置值 | hmset hash name zhangsan age 22 | ok |
String hmset(String key, Map<String, String> hash) |
HDEL | 刪除一個貨多個鍵返回刪除成功數量 | hdel hash name | 1 |
Long hdel(String key, String... field) |
HLEN | 返回散列包含鍵值的數量 | hlen hash | 1 |
Long hlen(String key) |
HEXISTS | 檢查鍵是否存在散列中 | hexists hash age | 1 |
Boolean hexists(String key, String field) |
HKEYS | 獲取散列所有鍵 | hkeys hash | age |
Set<String> hkeys(String key) |
HVALS | 獲取所有值 | hvals hash | 22 |
List<String> hvals(String key) |
HGETALL | 獲取所有鍵值 | hgetall hash |
age 22 |
Map<String, String> hgetAll(String key) |
HINCRBY | 將鍵的值加上整數 | hincrby hash age 1 | 23 |
Long hincrBy(String key, String field, long value) |
HINCRBYFLOAT | 將鍵的值加上浮點數 | hincrbyfloat age 2.1 | 25.10000000000000142 |
Double hincrByFloat(String key, String field, double value) |
八、有序集合(sorted set)
命令 | 描述 | 用例 | 返回 | JAVA方法 |
ZADD | 將帶有給定位置的成員添加到有序集合裏 | zadd zset 1 b | 1 |
Long zadd(String key, double score, String member) |
ZREM | 從有序集合中移除給定位置的元素 | zrem zset 1 | 0 |
Long zrem(String key, String... members) |
ZCRAD | 返回有序集合的數量 | zcrad zset | 1 |
Long zcard(String key) |
ZINCRBY | 將某元素排序加N | zincrby zset 1 b | 2 |
Double zincrby(String key, double increment, String member) |
ZCOUNT | 獲取某範圍內的成員數量 | zcount zset 1 2 | 1 |
Long zcount(String key, double min, double max) |
ZRANK | 返回成員的排名 | zrank zset b | 0 |
Long zrank(String key, String member) |
ZSCORE | 返回成員的分值 | zscore zset b | 2 |
Double zscore(String key, String member) |
ZRANGE | 返回有序集合排名範圍內成員 | zrange zset 0 -1 | b |
Set<String> zrange(String key, long start, long stop) |
ZREVRANK | 返回有序集合成員所在的位置,按從大到小排序 | zrevrank zset b | 1 |
Long zrevrank(String key, String member) |
ZREVRANGE | 返回有序集合給定排名範圍內成員,按從大到小排序 | zrevrange zset 0 -1 | b |
Set<String> zrevrange(String key, long start, long stop) |
ZREVRANGEBYSCORE | 獲取有序集合分值範圍內所有成員,按從大到小排序 | zrevrangebyscore zset 0 -1 | b |
Set<String> zrevrangeByScore(String key, double max, double min) |
ZREMRANGEBYRANK | 移除有序集合中排名範圍內的元素 | zremrangebyrank zset 0 -1 | 1 |
Long zremrangeByRank(String key, long start, long stop) |
ZREMRANGEBYSCORE | 移除有序集合分值在範圍內的元素 | zremrangebyscore zset 0 -1 | 1 |
Long zremrangeByScore(String key, double min, double max) |
ZINTERSTORE | 對給定有序集合執行交集運算 | zinterstore zset 2 zset1 zset2 | 0 |
Long zinterstore(String dstkey, String... sets) |
ZUNIONSTORE | d對給定有序集合執行並集運算 | zunionstore zset 2 zset1 zset2 | 1 |
Long zunionstore(String dstkey, String... sets) |
九、發佈與訂閱(pub/sub)
命令 | 描述 | 用例 |
SUBSCRIBE | 訂閱給定的一個或多個頻道 | subscribe channel [channel ...] |
UNSUBSCRIBE | r退訂給定一個頻道,如果未指定退訂全部 | unsubscribe [channel [channel ...]] |
PUBLISH | 向指定頻道發送消息 | publish channel message |
PSUBSCRIBE | 訂閱與給定模式相匹配的所有頻道 | psubscribe pattern [pattern ...] |
PUNSUBSCRIBE | 退訂給定的模式,如果沒有給定模式那麼退訂所有模式 | punsubscribe [pattern [pattern ...]] |
java代碼推薦閱讀:https://www.cnblogs.com/JerryMouseLi/p/11012839.html
如有錯漏,請各位大佬指正。