1. 程式人生 > >數據庫第一天

數據庫第一天

自定義 排序 lis 查看字符串 contex 需要 size sel ces

cookies
session

client<--------------------------->Server
-------------------->Sessionid=[用戶,密碼]
sookie=SID<----------------------

人--------------------------------->超市(VIP)
卡[ID] 電腦
cookies=ID session=[信息]

本地Session
mecached共享session

用memcached實現session共享[聯網]
怎麽實現共享讀寫信息
修改2.100和2.200,讀寫信息都到4.5的memcached

  1. java---->memcached
    [root@Web1 ~]# cd /root/lnmp_soft/session/
    [root@Web1 session]# cp *.jar /usr/local/tomcat/lib/
    在web1和web2上操作
    jar包最大的優點就是不用安裝,移動就算安裝

2.告訴2.100和2.200memcached在那(連哪個IP)

技術分享圖片
兩臺都需要做此步驟
打開配置文件
vim /usr/local/tomcat/conf/context.xml
技術分享圖片

NoSQL
memcached[緩存數據庫,kv數據庫]

預分配內存,速度
redis[緩存數據庫,kv數據庫,永久存儲,支持更多功能]
[主從,集群]
redis 1G
redis
在2.100和2.200操作

技術分享圖片
最後一個命令一路回車

2.100執行: redis-benchmark
在執行redis-cli

set abc "hello word " 寫,覆蓋
get abc 查

var/lib/redis/6379/dump.rdb 查看數據庫的數據

技術分享圖片

            [root@srv5 ~]# redis-cli 

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set string1 "hello the word" //設置字符串變量

OK
127.0.0.1:6379> get string1 //查看字符串變量
"hello the word"
127.0.0.1:6379> set string2 "hello" ex 5 //設置字符串變量,並設置過期時間為5秒
OK
127.0.0.1:6379> get string2 //查看字符串變量
"hello"
127.0.0.1:6379> get string2 //字符串過期後,查看該值為空
(nil)
127.0.0.1:6379> get string1
"hello the word"
127.0.0.1:6379> set string1 hello nx //僅當string1不存在時,才執行set指令
(nil)
127.0.0.1:6379> set string1 hello xx //僅當string1存在時,才執行set指令
OK
127.0.0.1:6379> get string1 //查看修改後string1的值
"hello"
127.0.0.1:6379> set string1 "hello the world" //修改string1的值
OK
127.0.0.1:6379> get string1
"hello the world"
127.0.0.1:6379> setrange string1 6 "Redis" //從第6個字符開始替換string1的值
(integer) 15
127.0.0.1:6379> get string1
"hello Redisorld"
127.0.0.1:6379> strlen string1 //計算string1的長度
(integer) 15
127.0.0.1:6379> append string1 xxx //對string1進行追加操作
(integer) 18
127.0.0.1:6379> get string1
"hello Redisorldxxx"
127.0.0.1:6379> append string1 " xxx"
(integer) 22
127.0.0.1:6379> get string1
"hello Redisorldxxx xxx"
127.0.0.1:6379> setbit string2 0 1 //按位設置string2的值,0位為1
(integer) 0
127.0.0.1:6379> setbit string2 1 1 //按位設置string2的值,1位為1
(integer) 0
127.0.0.1:6379> setbit string2 2 1
(integer) 0
127.0.0.1:6379> setbit string2 3 0
(integer) 0
127.0.0.1:6379> get string2 //不可以查看所有的值
"\xe0"
127.0.0.1:6379> bitcount string2 //統計string2中1的個數
(integer) 3
127.0.0.1:6379> getbit string2 0 //查看string2第0位的值
(integer) 1
127.0.0.1:6379> getbit string2 1 //查看string2第1位的值
(integer) 1
127.0.0.1:6379> decr string3 //遞減運算,初始值為0
(integer) -1
127.0.0.1:6379> decr string3
(integer) -2
127.0.0.1:6379> decr string3
(integer) -3
127.0.0.1:6379> decr string3
(integer) -4
127.0.0.1:6379> decr string3
(integer) -5
127.0.0.1:6379> set string4 10 //自定義變量初始值為10
OK
127.0.0.1:6379> decr string4 //對自定義變量進行遞減運算
(integer) 9
127.0.0.1:6379> decr string4
(integer) 8
127.0.0.1:6379> decr string4
(integer) 7
127.0.0.1:6379> decrby string4 2 //對變量進行遞減2運算
(integer) 5
127.0.0.1:6379> decrby string4 2
(integer) 3
127.0.0.1:6379> get string4
"3"
127.0.0.1:6379> set string5 "hello the world" //設置字符串變量
OK
127.0.0.1:6379> getrange string5 0 4 //查看字串的第0至第4位
"hello"
127.0.0.1:6379> getrange string5 -3 -1 //查看字串的倒數第3位至倒數第1位
"rld"
127.0.0.1:6379> incr page //對變量進行遞增運算,初始值為0
(integer) 1
127.0.0.1:6379> incr page
(integer) 2
127.0.0.1:6379> incr page
(integer) 3
127.0.0.1:6379> incr page
(integer) 4
127.0.0.1:6379> set string6 10 //設置字符串變量為10
OK
127.0.0.1:6379> incr string6 //對變量進行遞增運算
(integer) 11
127.0.0.1:6379> incr string6
(integer) 12
127.0.0.1:6379> incrby string6 2 //對變量進行遞增2運算
(integer) 14
127.0.0.1:6379> incrby string6 2
(integer) 16
127.0.0.1:6379> incrby string6 2
(integer) 18
127.0.0.1:6379> incrby string6 2
(integer) 20
127.0.0.1:6379> set num 16.1 //設置浮點數變量
OK
127.0.0.1:6379> incrbyfloat num 1.1 //對浮點數進行遞增1.1運算
"17.2"
127.0.0.1:6379> incrbyfloat num 1.1
"18.3"
127.0.0.1:6379> incrbyfloat num 1.1
"19.4"
127.0.0.1:6379> incrbyfloat num 1.1
"20.5"
127.0.0.1:6379> hset hkey google “www.g.cn”
//設置hash表hkey,google列的值為www.g.cn
(integer) 1
127.0.0.1:6379> hset hkey baidu “www.baidu.com”
//設置hash表hkey,baidu列的值為www.baidu.com
(integer) 1
127.0.0.1:6379> hget hkey google //查看hash表hkey中google列的值
"www.g.cn"
127.0.0.1:6379> hget hkey baidu //查看hash表hkey中baidu列的值
"www.baidu.com"
127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com"
OK
//一次性設置hash表site的多個列與值
127.0.0.1:6379> hmget site google baidu
1) "www.g.cn"
2) "www.baidu.com"
//一次性查看hash表site的多個列值
127.0.0.1:6379> hgetall site //查看site表中所有的列與值
1) "google"
2) "www.g.cn"
3) "baidu"
4) "www.baidu.com"
127.0.0.1:6379> hdel site google //刪除site表中google列
(integer) 1
127.0.0.1:6379> hgetall site //驗證刪除效果
1) "baidu"
2) "www.baidu.com"
127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com" sina "www.sina.com"
OK
127.0.0.1:6379> hkeys site //查看site表的所有列
1) "baidu"
2) "google"
3) "sina"
127.0.0.1:6379> hvals site //查看site表中所有列的值
1) "www.baidu.com"
2) "www.g.cn"
3) "www.sina.com"
127.0.0.1:6379> hmget site google baidu //一次性查看site表中的多個列值
1) "www.g.cn"
2) "www.baidu.com"

127.0.0.1:6379> lpush list1 a b c //創建列表並賦值
(integer) 3
127.0.0.1:6379> lpush list2 a //創建列表並賦值
(integer) 1
127.0.0.1:6379> lpush list2 b //給列表追加新值
(integer) 2
127.0.0.1:6379> lpush list2 c //給列表追加新值
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
//查看列表list1中的所有值,從0位到最後1位
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> lrange list1 1 2 //查看列表中第1和2位的值
1) "b"
2) "a"
127.0.0.1:6379> lrange list1 1 -1 //查看列表中第1至最後1位的值
1) "b"
127.0.0.1:6379> lrange list2 0 -1 //查看所有的值
1) "a"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrange list2 0 -1
1) "t"
2) "a"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> lpop list2
//返回list2列表頭元素數據,並將該值從列表中刪除,key不存在則返回nil
"t"
127.0.0.1:6379> lrange list2 0 -1 //驗證結果
1) "a"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lpop list2 //接續刪除頭部元素
"a"
127.0.0.1:6379> lrange list2 0 -1 //驗證結果
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> lpop list2
"c"
127.0.0.1:6379> lrange list2 0 -1
1) "b"
2) "a"
127.0.0.1:6379> lrange list4 0 -1 //查看全部數據如下
1) "f"
2) "e"
3) "d"
4) "a"
5) "c"
127.0.0.1:6379> lindex list4 0 //返回list4中第0個值
"f"
127.0.0.1:6379> lindex list4 1 //返回list4中第1個值
"e"
127.0.0.1:6379> lindex list4 -1 //返回list4中最後1個值
"c"
127.0.0.1:6379> lindex list4 -2 //返回list4中倒數第2個值
"a"
127.0.0.1:6379> lrange list4 0 -1
1) "f"
2) "e"
3) "d"
4) "a"
5) "c"
127.0.0.1:6379> lset list4 0 test //給list4的第0為插入值,值為test
OK
127.0.0.1:6379> lrange list4 0 -1 //驗證結果
1) "test"
2) "d"
3) "a"

127.0.0.1:6379> set mykey "hello" //定義字符串變量
OK
127.0.0.1:6379> get mykey //查看變量
"hello"
127.0.0.1:6379> del mykey //刪除變量
(integer) 1
127.0.0.1:6379> get mykey //驗證結果
(nil)
127.0.0.1:6379> set mykey "hello" //定義變量即值
OK
127.0.0.1:6379> get mykey //查看有值
"hello"
127.0.0.1:6379> get mykey
"hello"
127.0.0.1:6379> expire mykey 10 //定義過期時間
(integer) 1
127.0.0.1:6379> get mykey //10秒後查看,無值
(nil)
127.0.0.1:6379> set mykey "hello" //設置變量
OK
127.0.0.1:6379> persist mykey //重新定義過期時間為,永久有效
(integer) 1
127.0.0.1:6379> get mykey
"hello"
127.0.0.1:6379> get mykey
"hello"
127.0.0.1:6379> ttl mykey
(integer) -1 //永不過期
127.0.0.1:6379> expire mykey 10 //定義過期時間
(integer) 1
127.0.0.1:6379> ttl mykey //查看過期時間
(integer) 9
127.0.0.1:6379> ttl mykey
(integer) 8
127.0.0.1:6379> ttl mykey
(integer) 7
127.0.0.1:6379> ttl mykey
(integer) 6
127.0.0.1:6379> ttl mykey
(integer) 5
127.0.0.1:6379> ttl mykey
(integer) 4
127.0.0.1:6379> ttl mykey
(integer) 3
127.0.0.1:6379> ttl mykey
(integer) 3
127.0.0.1:6379> ttl mykey
(integer) 2
127.0.0.1:6379> ttl mykey
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) -2 //已經過期
127.0.0.1:6379> get mykey //查看mykey的值已經為空
(nil)
127.0.0.1:6379> set mykey "hello"
OK
127.0.0.1:6379> keys //查看數據庫下所有數據
1) "string6"
2) "list7"
3) "mykey"
4) "string4"
5) "db"
6) "num"
7) "result"
8) "hkey"
9) "string5"
10) "string1"
11) "bit1"
12) "page"
13) "bit2"
14) "site"
15) "string2"
16) "list1"
17) "string3"
18) "list6"
127.0.0.1:6379> keys li

1) "list7"
2) "list1"
3) "list6"
127.0.0.1:6379> keys s
1) "string6"
2) "string4"
3) "string5"
4) "string1"
5) "site"
6) "string2"
7) "string3"
127.0.0.1:6379> keys string[15] //查看string1或string5
1) "string5"
2) "string1"
127.0.0.1:6379> keys string[0-9] //查看string0值9的數據
1) "string6"
2) "string4"
3) "string5"
4) "string1"
5) "string2"
6) "string3"
127.0.0.1:6379> keys ?it
//使用通配符所有數據
1) "bit1"
2) "bit2"
127.0.0.1:6379> select 1 //進入1數據庫,默認數據庫為0
OK
127.0.0.1:6379[1]> keys //在新數據庫中查看數據為空
(empty list or set)
127.0.0.1:6379[1]> set test "test" //在數據庫1中創建變量
OK
127.0.0.1:6379[1]> get test //查看變量的值
"test"
127.0.0.1:6379[1]> select 2 //進入2數據庫
OK
127.0.0.1:6379[2]> keys
//查看所有數據
(empty list or set)
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> keys
1) "test"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys

1) "string6"
2) "list7"
3) "mykey"
4) "string4"
5) "db"
6) "num"
7) "result"
8) "hkey"
9) "string5"
10) "string1"
11) "bit1"
12) "page"
13) "bit2"
14) "site"
15) "string2"
16) "list1"
17) "string3"
18) "list6"
127.0.0.1:6379> flushall //清空所有數據
OK
127.0.0.1:6379> keys //驗證結果
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> set mykey "hello"
OK
127.0.0.1:6379> keys

1) "mykey"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys

1) "mykey"
127.0.0.1:6379> move mykey 1 //將數據庫0中的mykey變量移動至數據庫1
(integer) 1
127.0.0.1:6379> keys //在數據庫0中查看為空
(empty list or set)
127.0.0.1:6379> select 1 //進入數據庫1
OK
127.0.0.1:6379[1]> keys
//查看所有數據庫
1) "mykey"
127.0.0.1:6379[1]> lpush cost 1 8 7 2 5 //創建列表cost
(integer) 5
127.0.0.1:6379[1]> sort cost //對列表值進行排序
1) "1"
2) "2"
3) "5"
4) "7"
5) "8"

數據庫第一天