redisベスト04セット(集合データ型set、秩序集合sortedset)
27577 ワード
redisベスト04セット(集合データ型set、秩序集合sortedset)
pythonラーニングディレクトリ転送ゲート
文書ディレクトリ
ビットマップ操作bitmap
定義#テイギ#1、 ,
2、 512M , :2^32
# 1MB = 1024KB
# 1KB = 1024Byte( )
# 1Byte = 8bit( )
000000000000000
6 1 6 2 ...
強勢点 , 。 1 2 8 , MacBookPro , “ ” 50ms, 16MB
SETBITコマンド
1、 ,
2、 512M , :2^32
# 1MB = 1024KB
# 1KB = 1024Byte( )
# 1Byte = 8bit( )
000000000000000
6 1 6 2 ...
, 。 1 2 8 , MacBookPro , “ ” 50ms, 16MB
# 0
127.0.0.1:6379> SET mykey ab
OK
127.0.0.1:6379> GET mykey
"ab"
127.0.0.1:6379> SETBIT mykey 0 1
(integer) 0
127.0.0.1:6379> GET mykey
"\xe1b"
127.0.0.1:6379>
GETBITコマンド
127.0.0.1:6379> GETBIT mykey 3
(integer) 0
127.0.0.1:6379> GETBIT mykey 0
(integer) 1
127.0.0.1:6379>
BITCOUNTコマンド
127.0.0.1:6379> SET mykey1 ab
OK
127.0.0.1:6379[4]> BITCOUNT mykey
(integer) 6
127.0.0.1:6379[4]> BITCOUNT mykey 0 0
(integer) 3
シーンの適用
# ( )
key, offset, 1
#
user1:login , 1 , 30
SETBIT user1:login 0 1
SETBIT user1:login 29 1
BITCOUNT user1:login
コード実装
r.setbit('user1:login', 0, 1)
r.bitcount('user1:login')
ハッシュデータ型
1、 field value redis_key {field:value,field1:value1}
2、field value
3、 hash 2^32-1
1、 - 【1, 512 ,2:value 64 】
hash:
hk1 {'username':'guoxiaonao', 'age': '18'}
string:
hk1_username: 'guoxiaonao'
hk1_age : '18'
string:
hk1 : 'guoxiaonao_18_ _xxxxx'
2、
1, : ,
2,
# 1、
HSET key field value
HSETNX key field value
# 2、
HMSET key field value field value
# 3、
HLEN key
# 4、 ( 0)
HEXISTS key field
# 5、
HGET key field
# 6、
HMGET key field filed
# 7、
HGETALL key
# 8、
HKEYS key
# 9、
HVALS key
# 10、
HDEL key field
# 11、
HINCRBY key filed increment
# 12、
HINCRBYFLOAT key field increment
python操作hash
# 1、 ,
hset(name, key, value)
# 2、 ,
hget(name, key)
# 3、 ( ) ,
hmset(name, mapping)
# 4、 ( )
hmget(name, keys)
# 5、 ,
hgetall(name)
# 6、 ,
hkeys(name)
# 7、
hdel(name, *keys)
Pythonコードhashハッシュ
import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
#r.hset('pyh1', 'uname', 'wangweichao')
#r.hset('pyh1', 'age', 63)
# {b'uname': b'wangweichao', b'age': b'63'}
#print(r.hgetall('pyh1'))
#r.hmset('pyh2', {'uname':'guoxiaonao', 'age':18})
#print(r.hgetall('pyh2'))
print(r.hkeys('pyh2'))
print(r.hvals('pyh1'))
≪シーンの適用|Apply Scene|oem_src≫:≪ユーザー次元データ統計|User Dimension Data Statistics|oem_src≫
: 、 、 、
key, field,value
5
HSET user:10000 fans 5
HINCRBY user:10000 fans 1
適用シーン:キャッシュ-redis+mysql+hashの組合せ使用
mysql userテーブルusername age desc sign
redis - user_guoxiaonao {desc:xxxx,sign:xxxx}
amysite 1アプリケーションuser
userテーブル-username(11)age
1,ユーザ個人情報の表示-キャッシュhash-/user/detail/ユーザid-GET
usernameとageの表示
return username is %s age is %s
2,ユーザ更新個人情報-GETクエリ文字列/user/update/1?age=33
≪データベースの更新|Database Update|Eas≫-キャッシュの削除
ヒント:redis接続オブジェクトを直接ビュー関数で初期化すればよい
ビュー関数におけるグローバル変数r=redis.Redis…
1、 redis
2、redis , mysql , redis
3、
コレクションデータ型(set)
1、 、
2、
3、 2^32-1
# 1、 , ;
SADD key member1 member2
# 2、
SMEMBERS key
# 3、 ,
SREM key member1 member2
# 4、
SISMEMBER key member
# 5、 , 1
SRANDMEMBER key [count]
# 6、
SPOP key [count]
# 7、 , ,
SCARD key
# 8、
SMOVE source destination member
# 9、 (number1 1 2 3 number2 1 2 4 3)
SDIFF key1 key2
# 10、
SDIFFSTORE destination key1 key2
# 11、
SINTER key1 key2
SINTERSTORE destination key1 key2
# 11、
SUNION key1 key2
SUNIONSTORE destination key1 key2
ケース:新浪微博の共通の関心
# : ,
# : ,
# :
user001 = {'peiqi','qiaozhi','danni'}
user002 = {'peiqi','qiaozhi','lingyang'}
user001 user002 :
SINTER user001 user002
: {'peiqi','qiaozhi'}
python操作set
import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
#r.sadd('pys1', 'Jack', 'qiaozhi')
#print(r.smembers('pys1'))
#print(r.spop('pys1'))
# r.sadd('pys2', 'a', 'b')
# r.sadd('pys3', 'b', 'c')
# r.sadd('pys4', 'b', 'c', 'd')
# print(r.sinter('pys2', 'pys3', 'pys4'))
print(r.sunionstore('pys5', 'pys2', 'pys3', 'pys4'))
print(r.smembers('pys5'))
秩序集合(sortedset)
1、 、
2、
3、 (score), ( )
4、 2^32-1
スコア
2.0
4.0
6.0
8.0
10.0
要素
すいか
ぶどう
マンゴー
バナナ
りんご
従業員の給料を保存した秩序ある集合
スコア
6000
8000
10000
12000
要素
lucy
tom
jim
jack
いくつかの技術書を読んでいる人の数を保存しています
スコア
300
400
555
666
777
要素
コアプログラミング
アヴァンティ
ビンラディン
アームストロング
ビル・ゲイツ
#
zadd key score member
# ( )
zrange key start stop [withscores]
# ( )
zrevrange key start stop [withscores]
#
zscore key member
#
# offset :
# count :
# : zrangebyscore fruits (2.0 8.0
zrangebyscore key min max [withscores] [limit offset count]
# 10 , 5 :
# limit 40 10 (m-1)*n n
# MySQL: 10 , 5
# limit 40,10
# limit 2,3 : 3 4 5
#
zrem key member
#
zincrby key increment member
#
zrank key member
#
zrevrank key member
#
zremrangebyscore key min max
#
zcard key
#
zcount key min max
zcount salary 6000 8000
zcount salary (6000 8000# 6000
zcount salary (6000 (8000#6000
#
zunionstore destination numkeys key [weights ] [AGGREGATE SUM|MIN|MAX]
# zunionstore salary3 2 salary salary2 weights 1 0.5 AGGREGATE MAX
# 2 ,weights 1 salary, 0.5 salary2 , AGGREGATE
# : ,
zinterstore destination numkeys key1 key2 weights weight AGGREGATE SUM( )|MIN|MAX
python操作sorted set
import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
r.zadd('pyz1',{'tom':6000, 'jim':3000, 'jack':12000})
#[(b'jim', 3000.0), (b'tom', 6000.0), (b'jack', 12000.0)]
#print(r.zrange('pyz1', 0, -1, withscores=True))
#print(r.zrangebyscore('pyz1',3000, 12000,start=1, num=2))
#print(r.zrank('pyz1','jim'))
#[(b'jim', 3000.0), (b'tom', 6000.0), (b'jack', 12000.0)]
#print(r.zcount('pyz1', '(6000', 12000))
#r.zadd('pyz2', {'jim':8000,'gxn':10000})
r.zinterstore('pyz3', ('pyz1','pyz2'), aggregate='max')
print(r.zrange('pyz1', 0, -1, withscores=True))
print(r.zrange('pyz2', 0, -1, withscores=True))
print(r.zrange('pyz3', 0, -1, withscores=True))
ここで、編集者は非常に誠実にあなたがこの文章を読むことができることに感謝して、もしあなたの技術の学習に対して役に立つならば、あなたが貴重な3連撃【いいね、コレクション、分かち合います】を献上することができることを望んで、あなたの励まし、評論と提案は私の最大の動力です!私はインターネット業界で粘り強く戦っているkです!オリー