vim修改redis.conf配置文件(我的已經複製到虛擬機的/usr/local/redis/bin目錄下)為daemonize yes, 以後端模式啟動 ./redis-server redis.confbin目錄下運行 ./redis-cli連接客戶端 輸入ping回應pang成功 Strin ...
vim修改redis.conf配置文件(我的已經複製到虛擬機的/usr/local/redis/bin目錄下)為daemonize yes, 以後端模式啟動 ./redis-server redis.conf
bin目錄下運行 ./redis-cli連接客戶端 輸入ping回應pang成功
=================================================================================================================================================================
String的形式
set name xiaoming
get
是String操作也是後來key的操作
del 後面接鍵名 不關什麼串 集合都幹掉
keys * 可以看所有key的值 存了些什麼 也可 keys my* 也可keys my?????
追加判斷建 exists num 判斷num存在嗎? rename num num1 重命名鍵值 expire test 10 (先set test xiaohong 10秒後再get發現已逝世)
ttl test 還剩多久活-2 表示死了 -1表示沒設置過期
type num 返回類型的 String Set SortedSet List
incr
decr
incrby num 5
decrby num 5
append num any (追加成新字元串)
=================================================================================================================================================================
HashMap的形式
hset 外圍鍵名 內部鍵名 值
hget 外圍鍵名 內部鍵名 值
hmset 外名 內名 值 內名2 值 內名3 值...
HMGET user1 name age email phone address
hgetall 外圍鍵名
hdel user1 name (使用del會刪除整個user1)
hincrby user1 age 5
hexists user1 age
hlen user1
hkeys user1
hvals user1
=================================================================================================================================================================
linux 中redis的第三種 鏈表LinkedList集合形式 有序不唯一
lpush 1 2 3 4 5 從左壓棧
rpush a b c d e 從右壓棧
lrange mylist1 0 9 從左遍歷
不知道有多少個呢?如何要全部?
lrange mylist1 0 -1 (負數表示倒數)
不知道多少,剩一個不要
lrange mylist1 0 -2
lpop mylist1 從左側彈出
rpop mylist1 從右側彈出
llen mylist1 集合長度
lpushx mylist1 f 僅當mylist1存在時從左存入一個
rpushx mylist1 f 僅當mylist1存在時從右存入一個
lrem mylist1 1 1 刪除集合中的1個元素 刪除值為左起第一個1
lrem mylist1 2 9 刪除集合中的2個元素 刪除值為左起前兩個9
lrem mylist1 -1 f 刪除集合中的1個元素 刪除值為右起第一個f
lrem mylist1 0 f 刪除所有f
linsert mylist1 before a x 在a前插
linsert mylist1 after a x 在a後插
rpoplpush mylist1 mylist2 從集合1的右邊彈出一個放到集合2的左邊 (這個的作用涉及到多線程的生產者消費者模型-別人管生產任務,你管消費任務,線程池消化任務) (發郵件我還沒有做)
========================================================================================================================================================================
Set集合形式
sadd myset a b c c d e e 集合無序 唯一特點
srem myset b 刪除一條
SMEMBERS myset 遍歷
sismember myset a 判斷a是集合的成員
---------------------------------------------------
sadd zhangsanset lisi wangwu tianqi tom
sadd lucyset tom rose jack
找不同 zhangsan有lucy沒有
sdiff zhangsanset lucyset
找不同 lucy有zhangsan沒有
sdiff lucyset zhangsanset
求交集
sinter zhangsanset lucyset
求合集
sunion zhangsanset lucyset
scard zhangsanset 求集合個數
srandmember zhangsanset 隨機抽取
--------------------------------------
前邊的三個集合求完沒有存儲結果
sdiffstore jieguo zhangsanset lucyset
sinterstore jieguo zhangsanset lucyset
sunionstore jieguo zhangsanset lucyset
===============================================================================================================================================================
SortedSet形式
zadd myset1 21 zhangsan 38 lisi 308 wangu 每個數據前有個權重做排序用 修改就是再添加一個用新值
zrange myset1 0 -1 遍歷與有序鏈表相同
zrange myset1 0 -1 withscores 遍歷與有序鏈表相同
zscore myset1 zhangsan 張三多少分
zcard myset1 獲取大小
zrem myset1 lisi 刪除某個元素
zrevrange myset1 0 -1 反向遍歷 從高到低
zremrangebyrank myset1 0 1 從開始到結束的刪除
zremrangebyscore myset1 30 40 從開始到結束的分數刪除
zrangebyscore myset1 100 150 limit 0 2根據分數排序查詢 只要前兩條
zincrby myset1 3 xiaohu 給誰增長3分發帖經驗
zcount myset1 100 150 分數之間有多少人
zrank myset1 xiaohu 從小到大排第幾
zrevrank myset1 xiaohu 從大到小排第幾 0表示第一
===============================================================================================================================================================
jedis java連接redis的jar包導入後set get方法操作數據發現Connection Excepiton 修改Linux防火牆 增加埠成功(同Tomcat 外地IP無法訪問)
Linux 安裝Tomcat 配置防火牆後,本地可以訪問,外地通過IP無法訪問,防火牆配置沒有起作用原因
(配置Linux防火牆 vim /etc/sysconfig/iptables 增加埠 重啟服務service iptables restart)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
這句沒有放在適當的位置
應該放在22埠的下邊
JedisPool(jedisPoolConfig,"192.168.199.129",6379)得到的jedis.set("things","寫中文") 在jedis伺服器端會中文顯示16進位?
//這個方法是載入類路徑下的資源 src下的
properties.load(RedisUtils.class.getClassLoader().getResourceAsStream("redis.properties"));
補充:
redis也是有多資料庫的 在mysql下有use切換資料庫 在redis下使用 select 1 可以在0號庫move name 1 把內容移到1號庫 info查看單機還是集群模式standalone linux版本各種信息
dbsize 資料庫有多少個key flushdb清空資料庫
訂閱subscribe cctv5與發佈 publish cctv5 hahaha 雙擊再建一個連接 倆個連接做不同的事一個訂閱一個發佈
事務的特性:acid 原子性 (Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
--------------------------------------------------------------
redis的事務 redis的3條指令要挨著執行就是事務了 redis是單線程的 使用multi命令讓數據在queued隊列中等待一起exec
當發生錯誤 在set num4 xiaoming 後incr num4發生錯誤 redis根本沒有回滾 該執行還是執行了 有個discard不是回滾是撤銷上一條指令
redis的持久化,當redis進程被kill -9 27921 後,在啟動服務啟動客戶端 發現數據還在 因為在安裝目錄有一個文件dump.rdb每個一段時間把數據存在硬碟上
他的奧秘在redis.conf配置文件中有一個 save 900 1 save 300 10 save 60 10000
redis 可以在配置文件中配置密碼 requiredpass 輸密碼