ting_model 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/README.md +41 -0
- data/Rakefile +1 -0
- data/gen_shards.rb +59 -0
- data/lib/extenders/album_extender.rb +9 -0
- data/lib/extenders/block_avatar_extender.rb +5 -0
- data/lib/extenders/chat_extender.rb +5 -0
- data/lib/extenders/class_node.rb +21 -0
- data/lib/extenders/comment_extender.rb +5 -0
- data/lib/extenders/favorite_album_extender.rb +5 -0
- data/lib/extenders/favorite_extender.rb +5 -0
- data/lib/extenders/following_extender.rb +13 -0
- data/lib/extenders/following_group_extender.rb +5 -0
- data/lib/extenders/following_tag_extender.rb +5 -0
- data/lib/extenders/followingx2_group_extender.rb +5 -0
- data/lib/extenders/inbox_extender.rb +5 -0
- data/lib/extenders/linkman_extender.rb +5 -0
- data/lib/extenders/outbox_extender.rb +5 -0
- data/lib/extenders/track_block_extender.rb +5 -0
- data/lib/extenders/track_extender.rb +5 -0
- data/lib/extenders/track_in_record_extender.rb +76 -0
- data/lib/extenders/track_picture_extender.rb +5 -0
- data/lib/extenders/track_record_extender.rb +5 -0
- data/lib/extenders/track_rich_extender.rb +5 -0
- data/lib/extenders/track_set_extender.rb +79 -0
- data/lib/extenders/track_set_rich_extender.rb +5 -0
- data/lib/extenders/user_tag_extender.rb +5 -0
- data/lib/ting_model.rb +1 -0
- data/lib/ting_model/advertisement.rb +5 -0
- data/lib/ting_model/advertisement_new.rb +4 -0
- data/lib/ting_model/album.rb +31 -0
- data/lib/ting_model/album_node.rb +9 -0
- data/lib/ting_model/album_origin.rb +137 -0
- data/lib/ting_model/album_pod.rb +8 -0
- data/lib/ting_model/album_podcat.rb +8 -0
- data/lib/ting_model/android_channel.rb +4 -0
- data/lib/ting_model/android_channel_binding.rb +7 -0
- data/lib/ting_model/announcement.rb +12 -0
- data/lib/ting_model/app_recommend.rb +55 -0
- data/lib/ting_model/application_v_category.rb +5 -0
- data/lib/ting_model/approve_group.rb +4 -0
- data/lib/ting_model/approving_track.rb +4 -0
- data/lib/ting_model/approving_track_log.rb +4 -0
- data/lib/ting_model/audit_log.rb +5 -0
- data/lib/ting_model/baidu_count.rb +4 -0
- data/lib/ting_model/bind_user.rb +7 -0
- data/lib/ting_model/binding_app.rb +4 -0
- data/lib/ting_model/biting.rb +4 -0
- data/lib/ting_model/black_user.rb +9 -0
- data/lib/ting_model/block_avatar.rb +31 -0
- data/lib/ting_model/block_avatar_node.rb +10 -0
- data/lib/ting_model/block_avatar_origin.rb +24 -0
- data/lib/ting_model/category.rb +20 -0
- data/lib/ting_model/category_icon_version.rb +12 -0
- data/lib/ting_model/chat.rb +31 -0
- data/lib/ting_model/chat_node.rb +10 -0
- data/lib/ting_model/chat_origin.rb +32 -0
- data/lib/ting_model/comment.rb +80 -0
- data/lib/ting_model/comment_node.rb +10 -0
- data/lib/ting_model/comment_origin.rb +116 -0
- data/lib/ting_model/dead_album.rb +8 -0
- data/lib/ting_model/dead_track.rb +8 -0
- data/lib/ting_model/dead_user.rb +7 -0
- data/lib/ting_model/default_follow.rb +6 -0
- data/lib/ting_model/delayed_album.rb +26 -0
- data/lib/ting_model/delayed_publish.rb +4 -0
- data/lib/ting_model/delayed_track.rb +43 -0
- data/lib/ting_model/discovery_page.rb +17 -0
- data/lib/ting_model/editor_recommend.rb +5 -0
- data/lib/ting_model/favorite.rb +59 -0
- data/lib/ting_model/favorite_album.rb +50 -0
- data/lib/ting_model/favorite_album_node.rb +9 -0
- data/lib/ting_model/favorite_album_origin.rb +88 -0
- data/lib/ting_model/favorite_node.rb +10 -0
- data/lib/ting_model/favorite_origin.rb +138 -0
- data/lib/ting_model/feed.rb +159 -0
- data/lib/ting_model/file_upload.rb +4 -0
- data/lib/ting_model/file_upload_record.rb +4 -0
- data/lib/ting_model/focus.rb +16 -0
- data/lib/ting_model/focus_album.rb +9 -0
- data/lib/ting_model/focus_current.rb +10 -0
- data/lib/ting_model/focus_track.rb +17 -0
- data/lib/ting_model/focus_user.rb +7 -0
- data/lib/ting_model/follower.rb +27 -0
- data/lib/ting_model/follower_node.rb +10 -0
- data/lib/ting_model/follower_origin.rb +34 -0
- data/lib/ting_model/follower_tag.rb +27 -0
- data/lib/ting_model/follower_tag_node.rb +10 -0
- data/lib/ting_model/follower_tag_origin.rb +14 -0
- data/lib/ting_model/followerx2_group.rb +27 -0
- data/lib/ting_model/followerx2_group_node.rb +10 -0
- data/lib/ting_model/followerx2_group_origin.rb +12 -0
- data/lib/ting_model/following.rb +57 -0
- data/lib/ting_model/following_group.rb +31 -0
- data/lib/ting_model/following_group_node.rb +10 -0
- data/lib/ting_model/following_group_origin.rb +29 -0
- data/lib/ting_model/following_node.rb +10 -0
- data/lib/ting_model/following_origin.rb +72 -0
- data/lib/ting_model/following_tag.rb +52 -0
- data/lib/ting_model/following_tag_node.rb +10 -0
- data/lib/ting_model/following_tag_origin.rb +59 -0
- data/lib/ting_model/followingx2_group.rb +31 -0
- data/lib/ting_model/followingx2_group_node.rb +10 -0
- data/lib/ting_model/followingx2_group_origin.rb +23 -0
- data/lib/ting_model/human_category.rb +17 -0
- data/lib/ting_model/human_recommend_album.rb +8 -0
- data/lib/ting_model/human_recommend_album_category_tag.rb +4 -0
- data/lib/ting_model/human_recommend_album_tag.rb +4 -0
- data/lib/ting_model/human_recommend_category_album.rb +7 -0
- data/lib/ting_model/human_recommend_category_tag.rb +6 -0
- data/lib/ting_model/human_recommend_category_tag_album.rb +7 -0
- data/lib/ting_model/human_recommend_category_tag_track.rb +11 -0
- data/lib/ting_model/human_recommend_category_tag_user.rb +7 -0
- data/lib/ting_model/human_recommend_category_track.rb +11 -0
- data/lib/ting_model/human_recommend_category_user.rb +7 -0
- data/lib/ting_model/human_recommend_tag.rb +5 -0
- data/lib/ting_model/human_recommend_tag_album.rb +7 -0
- data/lib/ting_model/human_recommend_tag_track.rb +9 -0
- data/lib/ting_model/human_recommend_tag_user.rb +7 -0
- data/lib/ting_model/human_recommend_track.rb +9 -0
- data/lib/ting_model/human_recommend_user.rb +7 -0
- data/lib/ting_model/icon_version.rb +7 -0
- data/lib/ting_model/inbox.rb +31 -0
- data/lib/ting_model/inbox_node.rb +10 -0
- data/lib/ting_model/inbox_origin.rb +59 -0
- data/lib/ting_model/latest_album.rb +9 -0
- data/lib/ting_model/latest_favorite.rb +10 -0
- data/lib/ting_model/latest_track.rb +10 -0
- data/lib/ting_model/linkman.rb +30 -0
- data/lib/ting_model/linkman_node.rb +10 -0
- data/lib/ting_model/linkman_origin.rb +26 -0
- data/lib/ting_model/liteapp.rb +7 -0
- data/lib/ting_model/liteapp_album.rb +4 -0
- data/lib/ting_model/liteapp_tag.rb +4 -0
- data/lib/ting_model/lover.rb +27 -0
- data/lib/ting_model/lover_album.rb +27 -0
- data/lib/ting_model/lover_album_node.rb +9 -0
- data/lib/ting_model/lover_album_origin.rb +39 -0
- data/lib/ting_model/lover_node.rb +10 -0
- data/lib/ting_model/lover_origin.rb +45 -0
- data/lib/ting_model/m_user.rb +8 -0
- data/lib/ting_model/message_log.rb +4 -0
- data/lib/ting_model/message_picture.rb +5 -0
- data/lib/ting_model/meta.rb +4 -0
- data/lib/ting_model/mixing_album.rb +7 -0
- data/lib/ting_model/mobad_stat.rb +9 -0
- data/lib/ting_model/news.rb +16 -0
- data/lib/ting_model/out_link.rb +7 -0
- data/lib/ting_model/outbox.rb +31 -0
- data/lib/ting_model/outbox_node.rb +10 -0
- data/lib/ting_model/outbox_origin.rb +59 -0
- data/lib/ting_model/outlink_stat.rb +4 -0
- data/lib/ting_model/personal_setting.rb +26 -0
- data/lib/ting_model/push_message.rb +4 -0
- data/lib/ting_model/receive_laya.rb +9 -0
- data/lib/ting_model/recommend_album.rb +7 -0
- data/lib/ting_model/recommend_category_album.rb +7 -0
- data/lib/ting_model/recommend_category_tag.rb +5 -0
- data/lib/ting_model/recommend_category_tag_album.rb +7 -0
- data/lib/ting_model/recommend_category_tag_track.rb +9 -0
- data/lib/ting_model/recommend_category_tag_user.rb +7 -0
- data/lib/ting_model/recommend_category_track.rb +9 -0
- data/lib/ting_model/recommend_category_user.rb +7 -0
- data/lib/ting_model/recommend_tag.rb +15 -0
- data/lib/ting_model/recommend_tag_album.rb +7 -0
- data/lib/ting_model/recommend_tag_track.rb +9 -0
- data/lib/ting_model/recommend_tag_user.rb +7 -0
- data/lib/ting_model/recommend_track.rb +9 -0
- data/lib/ting_model/recommend_user.rb +7 -0
- data/lib/ting_model/reject_reason.rb +17 -0
- data/lib/ting_model/report.rb +33 -0
- data/lib/ting_model/report_information.rb +29 -0
- data/lib/ting_model/search_black_uid.rb +7 -0
- data/lib/ting_model/search_key.rb +6 -0
- data/lib/ting_model/send_msg.rb +4 -0
- data/lib/ting_model/shards.rb +2626 -0
- data/lib/ting_model/sms.rb +19 -0
- data/lib/ting_model/special.rb +17 -0
- data/lib/ting_model/special_album.rb +4 -0
- data/lib/ting_model/special_track.rb +4 -0
- data/lib/ting_model/sub_app_advertisement_new.rb +4 -0
- data/lib/ting_model/subappad_stat.rb +9 -0
- data/lib/ting_model/system_configuration.rb +5 -0
- data/lib/ting_model/temp_blob.rb +5 -0
- data/lib/ting_model/track.rb +30 -0
- data/lib/ting_model/track_block.rb +46 -0
- data/lib/ting_model/track_block_node.rb +10 -0
- data/lib/ting_model/track_block_origin.rb +69 -0
- data/lib/ting_model/track_in_record.rb +27 -0
- data/lib/ting_model/track_in_record_node.rb +10 -0
- data/lib/ting_model/track_in_record_origin.rb +134 -0
- data/lib/ting_model/track_node.rb +9 -0
- data/lib/ting_model/track_origin.rb +224 -0
- data/lib/ting_model/track_picture.rb +32 -0
- data/lib/ting_model/track_picture_node.rb +10 -0
- data/lib/ting_model/track_picture_origin.rb +26 -0
- data/lib/ting_model/track_record.rb +31 -0
- data/lib/ting_model/track_record_node.rb +9 -0
- data/lib/ting_model/track_record_origin.rb +64 -0
- data/lib/ting_model/track_rich.rb +30 -0
- data/lib/ting_model/track_rich_node.rb +10 -0
- data/lib/ting_model/track_rich_origin.rb +31 -0
- data/lib/ting_model/track_set.rb +27 -0
- data/lib/ting_model/track_set_node.rb +9 -0
- data/lib/ting_model/track_set_origin.rb +147 -0
- data/lib/ting_model/track_set_rich.rb +30 -0
- data/lib/ting_model/track_set_rich_node.rb +10 -0
- data/lib/ting_model/track_set_rich_origin.rb +24 -0
- data/lib/ting_model/uid_approve_group.rb +4 -0
- data/lib/ting_model/upload_track_share_temp.rb +6 -0
- data/lib/ting_model/user_link.rb +10 -0
- data/lib/ting_model/user_log.rb +33 -0
- data/lib/ting_model/user_tag.rb +31 -0
- data/lib/ting_model/user_tag_node.rb +10 -0
- data/lib/ting_model/user_tag_origin.rb +23 -0
- data/lib/ting_model/user_v_category.rb +8 -0
- data/lib/ting_model/v_application.rb +35 -0
- data/lib/ting_model/v_category.rb +7 -0
- data/lib/ting_model/v_user.rb +7 -0
- data/lib/ting_model/varification_code.rb +6 -0
- data/lib/ting_model/web_advertisement.rb +6 -0
- data/lib/ting_model/web_discovery_page.rb +10 -0
- data/lib/ting_model/web_recommend.rb +6 -0
- data/lib/ting_model/weixin_account.rb +8 -0
- data/lib/ting_model/weixin_keyword.rb +4 -0
- data/lib/ting_model/weixin_monitor.rb +4 -0
- data/ting_model.gemspec +251 -0
- metadata +313 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fce7e9624c7436fdeec00b84c957218d4103b3ef
|
4
|
+
data.tar.gz: 130feafca1025d4a58920b80a767c9f01e3c8cad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: af2468f83f499d2900c6af94a2beba710a48ae1e575953c78daf1efad933fb39c8a423808fd6634a4f4e11144a67026d4bee72024811b82f1d310d0afb2dcdf1
|
7
|
+
data.tar.gz: 059bd1dc8488af1d4518d3d5c0aed21f608c20d20ad4e1f7c801b38d0217395908d563ebbf0421d9e861387158520de4eaff3cf955fcd1a91259bab3939e4caa
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
changelog:
|
2
|
+
|
3
|
+
0.1.3 xunch cache extender
|
4
|
+
0.1.2 add special, android_channel
|
5
|
+
0.1.1 add followerx2_group
|
6
|
+
|
7
|
+
用于:
|
8
|
+
|
9
|
+
subapp2
|
10
|
+
core
|
11
|
+
shouji2
|
12
|
+
home
|
13
|
+
square
|
14
|
+
podcast
|
15
|
+
outside
|
16
|
+
backend
|
17
|
+
baiduyy
|
18
|
+
chezai
|
19
|
+
litewap
|
20
|
+
pc
|
21
|
+
thirdparty
|
22
|
+
wap
|
23
|
+
weixin_public
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
model如何对应分表?
|
28
|
+
|
29
|
+
分表的TrackRecord,对应100张表有(TrackRecord0-TrackRecord99)100个类,根据key找类:TrackRecord.shard(key) #=> TrackRecord59
|
30
|
+
|
31
|
+
拿到返回的类再操作,是线程安全的,例如:
|
32
|
+
TrackRecord.shard(key).where
|
33
|
+
TrackRecord.shard(key).create
|
34
|
+
TrackRecord.shard(key).new
|
35
|
+
|
36
|
+
svn地址:
|
37
|
+
svn://192.168.3.221/zdjt/ting/ting_model
|
38
|
+
|
39
|
+
测试:
|
40
|
+
ruby test/stn.rb (不安全,报错)
|
41
|
+
ruby test/shard.rb (安全,并行处理并输出)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/gen_shards.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
File.open(File.expand_path("../tmp/shards.rb", __FILE__), 'wb') do |f|
|
2
|
+
# f.puts "require 'active_record'"
|
3
|
+
f.puts "require File.expand_path('../album_origin.rb', __FILE__)"
|
4
|
+
f.puts "require File.expand_path('../block_avatar_origin.rb', __FILE__)"
|
5
|
+
f.puts "require File.expand_path('../chat_origin.rb', __FILE__)"
|
6
|
+
f.puts "require File.expand_path('../comment_origin.rb', __FILE__)"
|
7
|
+
f.puts "require File.expand_path('../favorite_origin.rb', __FILE__)"
|
8
|
+
f.puts "require File.expand_path('../favorite_album_origin.rb', __FILE__)"
|
9
|
+
f.puts "require File.expand_path('../follower_origin.rb', __FILE__)"
|
10
|
+
f.puts "require File.expand_path('../follower_tag_origin.rb', __FILE__)"
|
11
|
+
f.puts "require File.expand_path('../followerx2_group_origin.rb', __FILE__)"
|
12
|
+
f.puts "require File.expand_path('../following_origin.rb', __FILE__)"
|
13
|
+
f.puts "require File.expand_path('../followingx2_group_origin.rb', __FILE__)"
|
14
|
+
f.puts "require File.expand_path('../following_group_origin.rb', __FILE__)"
|
15
|
+
f.puts "require File.expand_path('../following_tag_origin.rb', __FILE__)"
|
16
|
+
f.puts "require File.expand_path('../inbox_origin.rb', __FILE__)"
|
17
|
+
f.puts "require File.expand_path('../linkman_origin.rb', __FILE__)"
|
18
|
+
f.puts "require File.expand_path('../lover_origin.rb', __FILE__)"
|
19
|
+
f.puts "require File.expand_path('../lover_album_origin.rb', __FILE__)"
|
20
|
+
f.puts "require File.expand_path('../outbox_origin.rb', __FILE__)"
|
21
|
+
f.puts "require File.expand_path('../track_origin.rb', __FILE__)"
|
22
|
+
f.puts "require File.expand_path('../track_block_origin.rb', __FILE__)"
|
23
|
+
f.puts "require File.expand_path('../track_in_record_origin.rb', __FILE__)"
|
24
|
+
f.puts "require File.expand_path('../track_picture_origin.rb', __FILE__)"
|
25
|
+
f.puts "require File.expand_path('../track_record_origin.rb', __FILE__)"
|
26
|
+
f.puts "require File.expand_path('../track_rich_origin.rb', __FILE__)"
|
27
|
+
f.puts "require File.expand_path('../track_set_origin.rb', __FILE__)"
|
28
|
+
f.puts "require File.expand_path('../track_set_rich_origin.rb', __FILE__)"
|
29
|
+
f.puts "require File.expand_path('../user_tag_origin.rb', __FILE__)"
|
30
|
+
100.times do |i|
|
31
|
+
f.puts "class Album#{i} < AlbumOrigin; self.table_name = 'tb_album#{i}'; end"
|
32
|
+
f.puts "class BlockAvatar#{i} < BlockAvatarOrigin; self.table_name = 'tb_block_avatar#{i}'; end"
|
33
|
+
f.puts "class Chat#{i} < ChatOrigin; self.table_name = 'tb_chat#{i}'; end"
|
34
|
+
f.puts "class Comment#{i} < CommentOrigin; self.table_name = 'tb_comment#{i}'; end"
|
35
|
+
f.puts "class Favorite#{i} < FavoriteOrigin; self.table_name = 'tb_favorite#{i}'; end"
|
36
|
+
f.puts "class FavoriteAlbum#{i} < FavoriteAlbumOrigin; self.table_name = 'tb_favorite_album#{i}'; end"
|
37
|
+
f.puts "class Follower#{i} < FollowerOrigin; self.table_name = 'tb_follower#{i}'; end"
|
38
|
+
f.puts "class FollowerTag#{i} < FollowerTagOrigin; self.table_name = 'tb_follower_tag#{i}'; end"
|
39
|
+
f.puts "class Followerx2Group#{i} < Followerx2GroupOrigin; self.table_name = 'tb_followerx2_group#{i}'; end"
|
40
|
+
f.puts "class Following#{i} < FollowingOrigin; self.table_name = 'tb_following#{i}'; end"
|
41
|
+
f.puts "class Followingx2Group#{i} < Followingx2GroupOrigin; self.table_name = 'tb_followingx2_group#{i}'; end"
|
42
|
+
f.puts "class FollowingGroup#{i} < FollowingGroupOrigin; self.table_name = 'tb_following_group#{i}'; end"
|
43
|
+
f.puts "class FollowingTag#{i} < FollowingTagOrigin; self.table_name = 'tb_following_tag#{i}'; end"
|
44
|
+
f.puts "class Inbox#{i} < InboxOrigin; self.table_name = 'tb_inbox#{i}'; end"
|
45
|
+
f.puts "class Linkman#{i} < LinkmanOrigin; self.table_name = 'tb_linkman#{i}'; end"
|
46
|
+
f.puts "class Lover#{i} < LoverOrigin; self.table_name = 'tb_lover#{i}'; end"
|
47
|
+
f.puts "class LoverAlbum#{i} < LoverAlbumOrigin; self.table_name = 'tb_lover_album#{i}'; end"
|
48
|
+
f.puts "class Outbox#{i} < OutboxOrigin; self.table_name = 'tb_outbox#{i}'; end"
|
49
|
+
f.puts "class Track#{i} < TrackOrigin; self.table_name = 'tb_track#{i}'; end"
|
50
|
+
f.puts "class TrackBlock#{i} < TrackBlockOrigin; self.table_name = 'tb_track_block#{i}'; end"
|
51
|
+
f.puts "class TrackInRecord#{i} < TrackInRecordOrigin; self.table_name = 'tb_track_in_record#{i}'; end"
|
52
|
+
f.puts "class TrackPicture#{i} < TrackPictureOrigin; self.table_name = 'tb_track_picture#{i}'; end"
|
53
|
+
f.puts "class TrackRecord#{i} < TrackRecordOrigin; self.table_name = 'tb_track_record#{i}'; end"
|
54
|
+
f.puts "class TrackRich#{i} < TrackRichOrigin; self.table_name = 'tb_track_rich#{i}'; end"
|
55
|
+
f.puts "class TrackSet#{i} < TrackSetOrigin; self.table_name = 'tb_track_set#{i}'; end"
|
56
|
+
f.puts "class TrackSetRich#{i} < TrackSetRichOrigin; self.table_name = 'tb_track_set_rich#{i}'; end"
|
57
|
+
f.puts "class UserTag#{i} < UserTagOrigin; self.table_name = 'tb_user_tag#{i}'; end"
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
module ClassNode
|
4
|
+
|
5
|
+
def seek(key)
|
6
|
+
unless @sorted_nodes
|
7
|
+
sorted_nodes, node_x_class_nodes = [], {}
|
8
|
+
self.select('node, class_name, table_name').order('node').each do |class_node|
|
9
|
+
sorted_nodes << class_node.node
|
10
|
+
node_x_class_nodes[class_node.node] = class_node
|
11
|
+
end
|
12
|
+
@sorted_nodes, @node_x_class_nodes = sorted_nodes, node_x_class_nodes
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
node = @sorted_nodes.bsearch{|node| node >= Zlib::crc32(key.to_s)} || @sorted_nodes.first
|
18
|
+
@node_x_class_nodes[node]
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module FollowingExtender
|
2
|
+
def next_id
|
3
|
+
ID_SERVICE.getNextId("ting.tb_following")
|
4
|
+
end
|
5
|
+
|
6
|
+
def decr_user_followings_count(uid)
|
7
|
+
COUNTER_SERVICE.decrBy('user.followings.count', uid, 1)
|
8
|
+
end
|
9
|
+
|
10
|
+
def decr_user_followers_count(uid)
|
11
|
+
COUNTER_SERVICE.decrBy('user.followers.count', uid, 1)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module TrackInRecordExtender
|
2
|
+
# TIR_CACHE_VERSION = 2
|
3
|
+
|
4
|
+
def fetch(track_id)
|
5
|
+
# key = "tir#{track_id}h#{TIR_CACHE_VERSION}"
|
6
|
+
# data = REDIS.get(key)
|
7
|
+
# return Hessian2.parse(data, TrackInRecordStruct) if data
|
8
|
+
|
9
|
+
# obj = TrackInRecord.shard(track_id).where(op_type: 1, track_id: track_id).first
|
10
|
+
# if obj
|
11
|
+
# REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackInRecordStruct, obj)))
|
12
|
+
# REDIS.expire(key, 604800)
|
13
|
+
# end
|
14
|
+
|
15
|
+
# obj
|
16
|
+
|
17
|
+
cache_server = $xunch["track_in_record"]
|
18
|
+
data = cache_server.get(track_id)
|
19
|
+
return data if data
|
20
|
+
obj = self.shard(track_id).where(op_type: 1, track_id: track_id).first
|
21
|
+
if obj
|
22
|
+
cache_server.put(obj)
|
23
|
+
end
|
24
|
+
obj
|
25
|
+
end
|
26
|
+
|
27
|
+
def mfetch(track_ids, ignore_nil = false)
|
28
|
+
# return [] if track_ids.empty?
|
29
|
+
|
30
|
+
# datas = REDIS.mget(track_ids.map{|track_id| "tir#{track_id}h#{TIR_CACHE_VERSION}" })
|
31
|
+
# objs = []
|
32
|
+
|
33
|
+
# datas.each_with_index do |data, i|
|
34
|
+
# if data
|
35
|
+
# objs << Hessian2.parse(data, TrackInRecordStruct)
|
36
|
+
# else
|
37
|
+
# track_id = track_ids[i]
|
38
|
+
# obj = TrackInRecord.shard(track_id).where(op_type: 1, track_id: track_id).first
|
39
|
+
# objs << obj
|
40
|
+
# if obj
|
41
|
+
# key = "tir#{track_id}h#{TIR_CACHE_VERSION}"
|
42
|
+
# REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackInRecordStruct, obj)))
|
43
|
+
# REDIS.expire(key, 604800)
|
44
|
+
# end
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
|
48
|
+
# objs.delete(nil) if ignore_nil
|
49
|
+
# objs
|
50
|
+
|
51
|
+
return [] if track_ids.empty?
|
52
|
+
cache_server = $xunch["track_in_record"]
|
53
|
+
datas = cache_server.multi_get(track_ids.clone)
|
54
|
+
objs = []
|
55
|
+
datas.each_with_index do |data, i|
|
56
|
+
if data
|
57
|
+
objs << data
|
58
|
+
else
|
59
|
+
track_id = track_ids[i]
|
60
|
+
obj = self.shard(track_id).where(op_type: 1, track_id: track_id).first
|
61
|
+
objs << obj
|
62
|
+
if obj
|
63
|
+
cache_server.put(obj)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
objs.delete(nil) if ignore_nil
|
68
|
+
objs
|
69
|
+
end
|
70
|
+
|
71
|
+
def del_cache(r)
|
72
|
+
# REDIS.del("tir#{r.track_id}h#{TIR_CACHE_VERSION}")
|
73
|
+
$xunch["track_in_record"].evict(r.track_id)
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module TrackSetExtender
|
2
|
+
# TRACKSET_CACHE_VERSION = 3
|
3
|
+
|
4
|
+
def fetch(id)
|
5
|
+
# key = "set#{id}h#{TRACKSET_CACHE_VERSION}"
|
6
|
+
# data = REDIS.get(key)
|
7
|
+
# return Hessian2.parse(data, TrackSetStruct) if data
|
8
|
+
|
9
|
+
# obj = TrackSet.shard(id).where(id: id).first
|
10
|
+
# if obj
|
11
|
+
# REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackSetStruct, obj)))
|
12
|
+
# REDIS.expire(key, 604800)
|
13
|
+
# end
|
14
|
+
|
15
|
+
# obj
|
16
|
+
|
17
|
+
cache_server = $xunch["track_set"]
|
18
|
+
data = cache_server.get(id)
|
19
|
+
return data if data
|
20
|
+
obj = self.shard(id).where(id: id).first
|
21
|
+
if obj
|
22
|
+
cache_server.put(obj)
|
23
|
+
end
|
24
|
+
|
25
|
+
obj
|
26
|
+
end
|
27
|
+
|
28
|
+
def mfetch(ids, ignore_nil = false)
|
29
|
+
# return [] if ids.empty?
|
30
|
+
|
31
|
+
# datas = REDIS.mget(ids.map{|id| "set#{id}h#{TRACKSET_CACHE_VERSION}" })
|
32
|
+
# objs = []
|
33
|
+
|
34
|
+
# datas.each_with_index do |data, i|
|
35
|
+
# if data
|
36
|
+
# objs << Hessian2.parse(data, TrackSetStruct)
|
37
|
+
# else
|
38
|
+
# id = ids[i]
|
39
|
+
# obj = TrackSet.shard(id).where(id: id).first
|
40
|
+
# objs << obj
|
41
|
+
# if obj
|
42
|
+
# key = "set#{id}h#{TRACKSET_CACHE_VERSION}"
|
43
|
+
# REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackSetStruct, obj)))
|
44
|
+
# REDIS.expire(key, 604800)
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
# end
|
48
|
+
|
49
|
+
# objs.delete(nil) if ignore_nil
|
50
|
+
# objs
|
51
|
+
|
52
|
+
return [] if ids.empty?
|
53
|
+
|
54
|
+
cache_server = $xunch["track_set"]
|
55
|
+
|
56
|
+
datas = cache_server.multi_get(ids)
|
57
|
+
objs = []
|
58
|
+
datas.each_with_index do |data, i|
|
59
|
+
if data
|
60
|
+
objs << data
|
61
|
+
else
|
62
|
+
id = ids[i]
|
63
|
+
obj = self.shard(id).where(id: id).first
|
64
|
+
objs << obj
|
65
|
+
if obj
|
66
|
+
cache_server.put(obj)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
objs.delete(nil) if ignore_nil
|
71
|
+
objs
|
72
|
+
end
|
73
|
+
|
74
|
+
def del_cache(r)
|
75
|
+
# REDIS.del("set#{r.id}h#{TRACKSET_CACHE_VERSION}")
|
76
|
+
$xunch["track_set"].evict(r.id)
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|