Redis 使用
安裝
直接下載下來解壓
https://github.com/microsoftarchive/redis/releases
文件夾中的文件說明
啓動Redis服務
帶配置文件啓動
reids-server.exe redis.windows.conf
連接到redis進行操作
cmd>{%redis%}/redis-cli -h ip地址 -p 端口號
ip 默認爲本地 -p 默認6379
cmd>{%redis%}/redis-cli
Redis的使用
String操作(重要)
設置值和獲取值
set key value
get key
同時設置一個或多個 key-value 對
mset
返回所有(一個或多個)給定 key 的值
mget
將 key 中儲存的數字值增1(key不存在,則初始化爲0,再加1)
incr key
將 key 中儲存的數字值減1(key不存在,則初始化爲0,再減1)
decr key
自定義自增數量和自減數目
incrBy / decrBy
key操作(重要)
獲取所有key列表
keys *
刪除key
del key
設置key的過期時間(xx秒後過期)
expire key second
查看key的過期時間
ttl key
清空整個redis服務器數據,所有的數據庫全部清空
flushall
清除當前庫,redis中默認有16個數據庫,名稱分別爲0,1,2…15
list操作(重要)
list集合可以看成是一個左右排列的隊列(列表)
將一個或多個值 value 插入到列表 key 的表頭(最左邊/最右邊)
lpush key value / rpush key value
移除並返回列表 key 的頭(最左邊/最右邊)元素
lpop key / rpop key
返回列表 key 中指定區間內的元素,查詢所有的stop爲-1即可
lrange key start stop
根據count值移除列表key中與參數 value 相等的元素 count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量爲 count 。count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量爲 count 的絕對值。count = 0 : 移除表中所有與 value 相等的值
lrem key count value
返回列表 key 中,下標爲 index 的元素
lindex key index
對一個列表進行修剪
ltrim key start stop
Quene(list)
存放都是字符串,由redis組織成各種數據結構
redis怎麼實現棧(FILO)和隊列(FIFO)
list控制同一邊進,同一邊出就是棧
list控制一邊進,另一邊出就是隊列.
set操作(重要)
set集合是一個無序的不含重複值的隊列
將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略
sadd key member
移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略
srem key member
返回集合 key 中的所有成員
smembers key
hash操作(重要)
添加一個name=>value鍵值對到key這個hash類型
hset key name value
獲取hash類型的name鍵對應的值
hget key name
批量添加name=>value鍵值對到key這個hash類型
hmset key name1 key1 name2 key2
批量獲取hash類型的鍵對應的值
hmget key name1 name2
返回哈希表 key 中的所有鍵
hkeys
返回哈希表 key 中的所有值
hvals
返回哈希表 key 中,所有的鍵和值
hgetall
Redis 訂閱 事務(瞭解)
設置密碼
–通過配置文件操作(掌握)
-
通過命令動態調整密碼
CONFIG SET 命令可以動態地調整 Redis 服務器的配置而無須重啓,重啓後失效 CONFIG SET requirepass 123456 //將密碼設置爲123456 CONFIG SET requirepass "" //清除密碼 AUTH 123456 //輸入密碼進行認證
- 在配置文件redis.widows.conf中增加一行代碼
在配置文件redis.widows.conf中增加一行代碼
requirepass 123456
將密碼123456設置到配置文件中,redis啓動時加載該文件,即可啓用密碼
java代碼操作Redis(重要)
jar包
springboot (連接方式 – 只需要做配置) jedis
簡單操作
String host = "127.0.0.1";
int port = 6379;
int timeout = 1000;
Jedis jedis = new Jedis(host, port, timeout);
String set = jedis.set("name", "一一");
System.out.println(jedis.get("name"));
jedis.close();
連接池配置
如果創建一個對象後需要爲他設置很多值,還不如先創建它配置對象並做完配置,然後再通過配置對象創建它
//1 創建jedispool配置對象
//2 做配置-四個
//3 創建jedispool
//4 通過jedispool獲取連接
//5 執行操作
//6 釋放連接
//7 摧毀連接池-如果是真正項目中它應該是一個受spring管理的單例
//1 創建jedispool配置對象
JedisPoolConfig config = new JedisPoolConfig();
//2 做配置-四個
config.setMaxIdle(2);
config.setMaxTotal(10);
config.setMaxWaitMillis(1*1000); //創建連接超時
config.setTestOnBorrow(true);//獲取連接是測試連接是否暢通
//3 創建jedispool
//1*1000 獲取連接超時時間
JedisPool pool = new JedisPool(config,"127.0.0.1",6379,1*1000,"admin");
//4 通過jedispool獲取連接
Jedis resource = pool.getResource();
//5 執行操作
String s = resource.set("name", "這是一個測試");
System.out.println(resource.get("name"));
對key 操作
//查詢所有的key keys *
Set<String> keys = resource.keys("*");
System.out.println(keys);
對String操作 存值和取值
String s1 = resource.set("name", "一一");
System.out.println(resource.get("name"));
清空數據庫
resource.flushDB();
對list集合操作
resource.lpush("stu","{name:yiyi}","{name:erer}","{name:sasa}" );
//0, -1 表示全部
List<String> stu = resource.lrange("stu", 0, -1);
System.out.println(stu);
對set集合操作
resource.sadd("stu","{name:yiyi}","{name:erer}","{name:sasa}" );
Set<String> stu = resource.smembers("stu");
System.out.println(stu);
對hash(map)集合操作
HashMap map = new HashMap();
map.put("name","yiyi");
map.put("age","18");
map.put("sex","true");
resource.hmset("user1",map);
List<String> hmget = resource.hmget("user1", "name", "age", "sex");
System.out.println(hmget);
sort排序操作 對數字
resource.lpush("num", "2","1","6","4","8","3");
System.out.println(resource.sort("num"));
SortingParams sortingParams = new SortingParams();
sortingParams.desc();
System.out.println(resource.sort("num", sortingParams));
字母的排序 根據ASCII碼 (根據首字母)
resource.lpush("area","Chengdu","Changsha","Wuhan","Guangzhou");
SortingParams sortingParams1 = new SortingParams();
sortingParams1.alpha();
System.out.println(resource.sort("area", sortingParams1));
事務操作
Transaction multi = resource.multi();
multi.set("name","yiyi");
multi.set("age","21");
multi.incr("name");
multi.incr("age");
List<Object> results = multi.exec();
System.out.println(results);
資源釋放
// 6 釋放連接
jedis.close(); //底層做了兼容,如果是連接池操作就是釋放,如果是連接操作就是關閉
// 7 摧毀連接池-如果是真正項目中它應該是一個受spring管理的單例
pool.destroy();