redis是幹啥的就不多說了,我這裏使用windows版的redis,redis是基於內存的,單進程單線程的非關係型數據庫,不需要考慮什麼線程安全;
想要慢慢的深入redis就要耐下心來從最基本的命令開始慢慢敲一遍,害
1. redis啓動腳本
下載完之後目錄應該是下圖這樣的,我們啓動一般是redis-server.exe redis.windows.conf啓動的,這樣可以根據不同配置文件啓動的redis服務也是不同的
便於後期的測試,我們寫一個啓動的腳本,就把上面那一行命令複製到一個txt文件,然後修改文件後綴爲.bat,以後只需要雙擊這個bat文件就能啓動redis服務端,然後點擊redis-cli.exe就能連接上了;
2.數據類型
redis中有五種數據類型,分別是zset,set,list,hash和string,其實就是和java中那幾種集合差不多
下面我們分別看看這幾種數據的用法;
2.1 string
字符串是最常用的數據類型了,操作的命令:
set/get:存放/獲取鍵值對
getset: 首先獲取key對應的值,並且覆蓋原來的值;
mset/mget: 可以一次性保存/獲取多個鍵值對
strlen: 獲取鍵對應的值得長度
append: 給鍵對應的值附加字符串,返回的是最終字符串的長度
getrange:字符串切割
setex/psetex: 和set命令一樣使用,只不過這裏可以設置超時時間,時間過了就刪除這個鍵值對,前者單位事秒,後者是毫秒
setnx: 這個命令真的很重要!!!redis實現分佈式鎖就是基於這個命令的,當redis沒有指定的key的時候,就存我們傳進去的鍵值對;有指定key就啥也不幹
msetnx: 這是setnx強化版,可以同時設置多個鍵值對
decr/incr: 自減一和自加一,就是i--和i++
decrby/incrby: 上面的命令每次只能減一/加一,這個命令可以指定減數/加數
2.2 list
很多個人覺得這個list像java中的List<T>,其實我覺得像java中List<List<T>>這種類型纔對,而且redis中的list可以從頭部插入元素lpush,從尾部插入元素rpush
特點:元素有序,可重複
lpush:創建一個list,並每次從頭部(或者說左邊)向其中添加多個元素,元素可以重複
lrange: 遍歷list中所有元素
rpush: 每次從尾部向list添加元素
lpushx/rpushx: 向list添加元素之前,要保證這個list必須存在,用法和lpush/rpush一樣;(這個x是exist的簡寫)
lpop/rpop: 拿到頭部/尾部元素,並刪除list中對應的該元素
llen: 獲取指定list中元素的數量
lset: 修改列表中指定位置的值
lindex: 獲取列表中指定位置的值
lrem: 刪除指定數量的重複元素
ltrim:切割一部分的列表爲我所用
linsert: 從頭到尾匹配到指定元素,在這個元素之前/之後 插入指定元素 ,下面的before是之前,用after是之後